Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Configuration / VirtualDirectoryMapping.cs / 1305376 / VirtualDirectoryMapping.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Configuration { using System; using System.Configuration; using System.IO; using System.Web.Util; using System.Security.Permissions; // // Maps a virtual directory to a physical directory and its config file. // public sealed class VirtualDirectoryMapping { VirtualPath _virtualDirectory; string _physicalDirectory; string _configFileBaseName; bool _isAppRoot; const string DEFAULT_BASE_NAME = "web.config"; public VirtualDirectoryMapping(string physicalDirectory, bool isAppRoot) : this(null, physicalDirectory, isAppRoot, DEFAULT_BASE_NAME) { } public VirtualDirectoryMapping(string physicalDirectory, bool isAppRoot, string configFileBaseName) : this(null, physicalDirectory, isAppRoot, configFileBaseName) { } private VirtualDirectoryMapping(VirtualPath virtualDirectory, string physicalDirectory, bool isAppRoot, string configFileBaseName) { _virtualDirectory = virtualDirectory; _isAppRoot = isAppRoot; PhysicalDirectory = physicalDirectory; ConfigFileBaseName = configFileBaseName; } internal VirtualDirectoryMapping Clone() { return new VirtualDirectoryMapping(_virtualDirectory, _physicalDirectory, _isAppRoot, _configFileBaseName); } // // Get the virtual directory. // Not settable because it is set when it is added to a collection. // public string VirtualDirectory { get { return (_virtualDirectory != null) ? _virtualDirectory.VirtualPathString : string.Empty; } } internal VirtualPath VirtualDirectoryObject { get { return _virtualDirectory; } } internal void SetVirtualDirectory(VirtualPath virtualDirectory) { _virtualDirectory = virtualDirectory; } // // The physical directory. // public string PhysicalDirectory { get { return _physicalDirectory; } set { string physicalDirectory = value; if (String.IsNullOrEmpty(physicalDirectory)) { physicalDirectory = null; } else { // remove trailing '\' if any if (UrlPath.PathEndsWithExtraSlash(physicalDirectory)) { physicalDirectory = physicalDirectory.Substring(0, physicalDirectory.Length - 1); } // Throw if the resulting physical path is not canonical, to prevent potential // security issues (VSWhidbey 418125) if (FileUtil.IsSuspiciousPhysicalPath(physicalDirectory)) { throw ExceptionUtil.ParameterInvalid("PhysicalDirectory"); } } _physicalDirectory = physicalDirectory; } } // // Indicates whether the virtual directory is the location of an application. // public bool IsAppRoot { get { return _isAppRoot; } set { _isAppRoot = value; } } // // The base name of the config file. // If not specified, "web.config" is used. // public string ConfigFileBaseName { get { return _configFileBaseName; } set { if (string.IsNullOrEmpty(value)) { throw ExceptionUtil.PropertyInvalid("ConfigFileBaseName"); } _configFileBaseName = value; } } internal void Validate() { if (_physicalDirectory != null) { // // Ensure that the caller has PathDiscovery to the resulting config file, // and that the web.config file does not have ".." that could lead to a // different directory. // string configFilename = Path.Combine(_physicalDirectory, _configFileBaseName); string fullConfigFilename = Path.GetFullPath(configFilename); if ( Path.GetDirectoryName(fullConfigFilename) != _physicalDirectory || Path.GetFileName(fullConfigFilename) != _configFileBaseName || FileUtil.IsSuspiciousPhysicalPath(configFilename)) { throw ExceptionUtil.ParameterInvalid("configFileBaseName"); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EntityConnection.cs
- ManagedCodeMarkers.cs
- SmiXetterAccessMap.cs
- InfoCardArgumentException.cs
- ToolStripProgressBar.cs
- XmlRawWriter.cs
- WindowsStartMenu.cs
- BehaviorService.cs
- TextChangedEventArgs.cs
- SchemaDeclBase.cs
- TriggerAction.cs
- Transform3D.cs
- Optimizer.cs
- DispatcherEventArgs.cs
- XmlDataSourceDesigner.cs
- SortExpressionBuilder.cs
- ITreeGenerator.cs
- DataGridViewSelectedRowCollection.cs
- QilUnary.cs
- SetStoryboardSpeedRatio.cs
- Invariant.cs
- SiteMap.cs
- VisualProxy.cs
- TransformCollection.cs
- ParamArrayAttribute.cs
- TextBoxAutoCompleteSourceConverter.cs
- BinHexEncoding.cs
- DocumentViewerHelper.cs
- ClientTarget.cs
- AggregationMinMaxHelpers.cs
- GroupBoxRenderer.cs
- NativeCompoundFileAPIs.cs
- LinkLabel.cs
- WorkflowDesigner.cs
- GregorianCalendarHelper.cs
- ComponentChangingEvent.cs
- SecurityRequiresReviewAttribute.cs
- References.cs
- FileSystemWatcher.cs
- CollectionViewSource.cs
- TerminatorSinks.cs
- TimeZoneNotFoundException.cs
- SHA1Cng.cs
- AnnotationComponentManager.cs
- TypeListConverter.cs
- ErrorHandler.cs
- TypeConverter.cs
- RenderCapability.cs
- HtmlMeta.cs
- ScrollItemProviderWrapper.cs
- ResourcePermissionBase.cs
- DetailsViewPageEventArgs.cs
- OutputCacheProfileCollection.cs
- DataServiceException.cs
- Typeface.cs
- ToolZone.cs
- TextBoxBase.cs
- RuleSetCollection.cs
- OutputScopeManager.cs
- CaseExpr.cs
- RoutedEventConverter.cs
- WindowsToolbarItemAsMenuItem.cs
- FormattedText.cs
- CompatibleIComparer.cs
- ActiveDocumentEvent.cs
- AsyncOperationLifetimeManager.cs
- MulticastDelegate.cs
- EntityEntry.cs
- DataControlReference.cs
- Duration.cs
- Brush.cs
- SmtpNetworkElement.cs
- KeyPullup.cs
- ZoneMembershipCondition.cs
- Queue.cs
- PointUtil.cs
- XpsFilter.cs
- CatalogZone.cs
- XmlObjectSerializerWriteContextComplex.cs
- DbProviderFactories.cs
- FloaterParagraph.cs
- HtmlSelect.cs
- Point3DCollection.cs
- SqlClientWrapperSmiStream.cs
- SoapTypeAttribute.cs
- CompiledQueryCacheKey.cs
- LocatorManager.cs
- HtmlInputHidden.cs
- PropertyGrid.cs
- StandardRuntimeEnumValidatorAttribute.cs
- UserNamePasswordValidationMode.cs
- ListViewInsertionMark.cs
- XMLUtil.cs
- DocumentViewerBase.cs
- HyperLinkStyle.cs
- AudienceUriMode.cs
- AsyncOperationManager.cs
- SettingsAttributeDictionary.cs
- SqlMethods.cs
- CodeSubDirectoriesCollection.cs