Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ //// 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
- AtomMaterializerLog.cs
- RegexCapture.cs
- ScriptResourceInfo.cs
- TextTreeInsertUndoUnit.cs
- Renderer.cs
- MatrixConverter.cs
- ToolStripHighContrastRenderer.cs
- ReceiveParametersContent.cs
- SafeNativeMethodsOther.cs
- VerticalConnector.xaml.cs
- DragEvent.cs
- DataGridViewUtilities.cs
- HtmlInputImage.cs
- FixUp.cs
- XhtmlTextWriter.cs
- KeyTimeConverter.cs
- ButtonChrome.cs
- OleDbErrorCollection.cs
- Descriptor.cs
- BuildManagerHost.cs
- LinqDataSourceDeleteEventArgs.cs
- DiscoveryServerProtocol.cs
- DataSourceXmlTextReader.cs
- FactoryId.cs
- DrawTreeNodeEventArgs.cs
- XmlSerializationWriter.cs
- TextAction.cs
- ThreadAttributes.cs
- TextBlockAutomationPeer.cs
- CatalogPart.cs
- AdPostCacheSubstitution.cs
- AndCondition.cs
- ReflectPropertyDescriptor.cs
- CryptoHelper.cs
- GroupStyle.cs
- ServiceConfigurationTraceRecord.cs
- ConfigXmlSignificantWhitespace.cs
- MdiWindowListStrip.cs
- CompiledELinqQueryState.cs
- SchemaElementLookUpTable.cs
- SafeNativeMemoryHandle.cs
- StateDesigner.Helpers.cs
- Enumerable.cs
- TrackingServices.cs
- HtmlHead.cs
- XpsS0ValidatingLoader.cs
- ToolStripPanelRow.cs
- CodeBlockBuilder.cs
- CrossContextChannel.cs
- HtmlLinkAdapter.cs
- WebBrowsableAttribute.cs
- HierarchicalDataSourceIDConverter.cs
- EventDescriptor.cs
- CompilationLock.cs
- ContractsBCL.cs
- ImageIndexConverter.cs
- SqlWriter.cs
- HttpFileCollection.cs
- ZoneLinkButton.cs
- _BufferOffsetSize.cs
- DataObjectAttribute.cs
- RenderCapability.cs
- SmtpLoginAuthenticationModule.cs
- ArrayList.cs
- XMLUtil.cs
- RijndaelManagedTransform.cs
- ProfessionalColorTable.cs
- HttpListenerRequest.cs
- uribuilder.cs
- SpecialFolderEnumConverter.cs
- FileReader.cs
- DoubleConverter.cs
- UInt32Converter.cs
- RemotingServices.cs
- DataControlFieldsEditor.cs
- BypassElementCollection.cs
- OrderedDictionary.cs
- AccessedThroughPropertyAttribute.cs
- DESCryptoServiceProvider.cs
- columnmapkeybuilder.cs
- InternalBufferOverflowException.cs
- PropertyChangedEventArgs.cs
- AccessibilityApplicationManager.cs
- EventMappingSettingsCollection.cs
- WebPartChrome.cs
- VBIdentifierTrimConverter.cs
- CharacterBufferReference.cs
- Size.cs
- InputLangChangeRequestEvent.cs
- CatalogPart.cs
- DLinqAssociationProvider.cs
- XPathAxisIterator.cs
- TextEditorSpelling.cs
- SystemMulticastIPAddressInformation.cs
- SerialErrors.cs
- DataSourceXmlSerializationAttribute.cs
- JapaneseCalendar.cs
- ProfilePropertySettingsCollection.cs
- DataListItemEventArgs.cs
- UInt64Storage.cs