Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / Configuration / VirtualDirectoryMapping.cs / 2 / 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 ( 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. //------------------------------------------------------------------------------ //// 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 ( 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HandleCollector.cs
- ListenerAdapter.cs
- CompositeScriptReference.cs
- XmlUtf8RawTextWriter.cs
- CompleteWizardStep.cs
- TimelineGroup.cs
- ExpandSegment.cs
- WebCodeGenerator.cs
- MarshalDirectiveException.cs
- HostingEnvironment.cs
- NavigationHelper.cs
- VariableDesigner.xaml.cs
- BaseUriHelper.cs
- IdentitySection.cs
- GeometryHitTestResult.cs
- iisPickupDirectory.cs
- CommandEventArgs.cs
- Baml2006ReaderSettings.cs
- HwndSource.cs
- XmlValidatingReader.cs
- XPathSingletonIterator.cs
- SqlRowUpdatingEvent.cs
- ListViewGroupConverter.cs
- ListBase.cs
- SplineQuaternionKeyFrame.cs
- XmlBinaryReader.cs
- Request.cs
- SoapTransportImporter.cs
- CodeIterationStatement.cs
- DoubleKeyFrameCollection.cs
- OdbcConnectionPoolProviderInfo.cs
- GeneralTransformGroup.cs
- ReadOnlyDataSource.cs
- SerializationSectionGroup.cs
- HtmlImage.cs
- TypeConverterMarkupExtension.cs
- XmlIgnoreAttribute.cs
- OperationAbortedException.cs
- StrokeCollectionDefaultValueFactory.cs
- FormViewPageEventArgs.cs
- CodeCompileUnit.cs
- DLinqDataModelProvider.cs
- _HeaderInfoTable.cs
- hebrewshape.cs
- SimpleTextLine.cs
- ToolTipService.cs
- XsdValidatingReader.cs
- HtmlFormAdapter.cs
- JsonCollectionDataContract.cs
- Ref.cs
- MimeTypePropertyAttribute.cs
- GraphicsPath.cs
- IndexExpression.cs
- UriWriter.cs
- PathGeometry.cs
- HttpModuleAction.cs
- GridItem.cs
- TdsParameterSetter.cs
- ColorConverter.cs
- WindowsListViewItemStartMenu.cs
- GorillaCodec.cs
- HostingEnvironmentWrapper.cs
- WebServiceResponseDesigner.cs
- CodeSnippetTypeMember.cs
- control.ime.cs
- RemoteCryptoSignHashRequest.cs
- WindowsPrincipal.cs
- XmlEncoding.cs
- DesigntimeLicenseContextSerializer.cs
- CachedFontFamily.cs
- Focus.cs
- AddInDeploymentState.cs
- TextFormatterImp.cs
- GridViewUpdateEventArgs.cs
- AnimationLayer.cs
- ImageAutomationPeer.cs
- LayoutTableCell.cs
- DocumentCollection.cs
- DataControlCommands.cs
- SqlDeflator.cs
- DataTableNewRowEvent.cs
- SecureUICommand.cs
- Soap12ProtocolImporter.cs
- TransformerInfo.cs
- DragCompletedEventArgs.cs
- WindowsIdentity.cs
- GroupDescription.cs
- Vector3DAnimationUsingKeyFrames.cs
- HebrewCalendar.cs
- DocumentationServerProtocol.cs
- ApplicationServiceHelper.cs
- ObjectMaterializedEventArgs.cs
- RemoteWebConfigurationHost.cs
- InheritanceRules.cs
- Compilation.cs
- TextDpi.cs
- ExtentCqlBlock.cs
- SizeValueSerializer.cs
- SelectionItemPattern.cs
- PropertyDescriptorComparer.cs