Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / Configuration / VirtualDirectoryMapping.cs / 5 / 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. // [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] 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. // [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] 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
- DetailsViewUpdatedEventArgs.cs
- MD5HashHelper.cs
- NativeDirectoryServicesQueryAPIs.cs
- PasswordBox.cs
- FormsAuthenticationConfiguration.cs
- ISFClipboardData.cs
- MetadataConversionError.cs
- DetailsViewDeletedEventArgs.cs
- PerformanceCounterPermissionEntry.cs
- TreeWalkHelper.cs
- HelpExampleGenerator.cs
- GifBitmapEncoder.cs
- ConnectionsZone.cs
- AccessControlList.cs
- PointConverter.cs
- SynthesizerStateChangedEventArgs.cs
- NetworkInterface.cs
- EntityContainerEmitter.cs
- SyntaxCheck.cs
- FileSecurity.cs
- StylusButton.cs
- wmiprovider.cs
- FileDialog_Vista.cs
- HttpCachePolicy.cs
- ConvertersCollection.cs
- StringExpressionSet.cs
- EntityConnection.cs
- DesignSurface.cs
- DataGridViewRowPrePaintEventArgs.cs
- EventProvider.cs
- _CacheStreams.cs
- RevocationPoint.cs
- DataGridTextBoxColumn.cs
- CatalogZoneBase.cs
- DeviceContext2.cs
- ColorConverter.cs
- OutputBuffer.cs
- QueuedDeliveryRequirementsMode.cs
- CommonXSendMessage.cs
- basemetadatamappingvisitor.cs
- columnmapfactory.cs
- SurrogateSelector.cs
- ListBoxDesigner.cs
- RtType.cs
- BridgeDataReader.cs
- DrawingContextWalker.cs
- SerializationEventsCache.cs
- FormatException.cs
- StaticTextPointer.cs
- SequenceDesigner.xaml.cs
- RenderingEventArgs.cs
- WindowsImpersonationContext.cs
- XmlSerializerOperationGenerator.cs
- ClientSponsor.cs
- CodeTypeReferenceCollection.cs
- MeasurementDCInfo.cs
- XmlDataSource.cs
- PointAnimationUsingKeyFrames.cs
- XmlObjectSerializerWriteContextComplex.cs
- SystemIcmpV6Statistics.cs
- smtppermission.cs
- AttributeAction.cs
- StringArrayConverter.cs
- IPipelineRuntime.cs
- StreamWriter.cs
- TabControlCancelEvent.cs
- DateTimeStorage.cs
- CacheEntry.cs
- BrowserCapabilitiesCompiler.cs
- XmlnsPrefixAttribute.cs
- AndCondition.cs
- ColorMap.cs
- BaseTemplateBuildProvider.cs
- XmlSchemaExporter.cs
- ComplexTypeEmitter.cs
- PointIndependentAnimationStorage.cs
- ReceiveSecurityHeaderElementManager.cs
- TransformerTypeCollection.cs
- FormViewInsertedEventArgs.cs
- ProfilePropertySettings.cs
- DataGridCommandEventArgs.cs
- JsonReader.cs
- ScrollViewer.cs
- TiffBitmapDecoder.cs
- EncoderReplacementFallback.cs
- ConditionedDesigner.cs
- CatalogPart.cs
- SizeAnimationClockResource.cs
- RootAction.cs
- ScrollViewerAutomationPeer.cs
- storepermissionattribute.cs
- GraphicsPath.cs
- TableLayout.cs
- ColumnWidthChangingEvent.cs
- PeerNameRecordCollection.cs
- PrimitiveSchema.cs
- C14NUtil.cs
- XamlTypeMapper.cs
- DoubleLink.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs