Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / Configuration / VirtualDirectoryMapping.cs / 1 / 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
- UriTemplateClientFormatter.cs
- CachedRequestParams.cs
- WindowsGraphics2.cs
- IWorkflowDebuggerService.cs
- ErrorStyle.cs
- GridItemPatternIdentifiers.cs
- CodeExporter.cs
- PixelShader.cs
- OdbcDataAdapter.cs
- PropertyCondition.cs
- BitmapImage.cs
- HtmlInputFile.cs
- SerializableAttribute.cs
- WebHeaderCollection.cs
- AbstractSvcMapFileLoader.cs
- XmlChoiceIdentifierAttribute.cs
- DeploymentSectionCache.cs
- SoapAttributeAttribute.cs
- CLRBindingWorker.cs
- UnhandledExceptionEventArgs.cs
- EncodingInfo.cs
- SimpleHandlerBuildProvider.cs
- FrameworkElementFactoryMarkupObject.cs
- SQLStringStorage.cs
- InvalidOperationException.cs
- Evidence.cs
- TextDecorations.cs
- ServiceDescriptionSerializer.cs
- FontFamilyValueSerializer.cs
- GroupItem.cs
- PageBuildProvider.cs
- PointAnimationClockResource.cs
- Transform3DGroup.cs
- CssTextWriter.cs
- BindingContext.cs
- xmlglyphRunInfo.cs
- AliasedSlot.cs
- SystemUdpStatistics.cs
- FrugalList.cs
- XmlEncoding.cs
- Listbox.cs
- WebPartZoneDesigner.cs
- DataViewManagerListItemTypeDescriptor.cs
- NavigationPropertyEmitter.cs
- BlurEffect.cs
- TextSearch.cs
- ReflectionPermission.cs
- Group.cs
- ArcSegment.cs
- StyleXamlParser.cs
- TextTreeRootNode.cs
- DurationConverter.cs
- DesignerMetadata.cs
- TextBoxView.cs
- RemoteWebConfigurationHostServer.cs
- AsyncPostBackTrigger.cs
- QilDataSource.cs
- PageCatalogPart.cs
- InkPresenterAutomationPeer.cs
- HttpResponseWrapper.cs
- CacheDependency.cs
- ResourcesChangeInfo.cs
- RecordManager.cs
- Expression.cs
- MarginsConverter.cs
- GlobalAllocSafeHandle.cs
- Evaluator.cs
- CodeSnippetTypeMember.cs
- NativeMethods.cs
- WebPartDescription.cs
- DelegatingConfigHost.cs
- ConfigXmlText.cs
- MainMenu.cs
- RightsManagementSuppressedStream.cs
- ListDictionary.cs
- LZCodec.cs
- FormViewModeEventArgs.cs
- FacetValueContainer.cs
- OdbcStatementHandle.cs
- NativeMethods.cs
- SqlDataSource.cs
- SmiConnection.cs
- ResourceDescriptionAttribute.cs
- PropertyInfoSet.cs
- RemoteWebConfigurationHost.cs
- Calendar.cs
- OleDbEnumerator.cs
- OrderByQueryOptionExpression.cs
- PeerName.cs
- ParserContext.cs
- GeneralTransform3DTo2DTo3D.cs
- RetrieveVirtualItemEventArgs.cs
- ServiceMemoryGates.cs
- JapaneseLunisolarCalendar.cs
- DetailsViewUpdateEventArgs.cs
- Cursor.cs
- RequestQueue.cs
- WebPartsSection.cs
- HierarchicalDataBoundControl.cs
- RawKeyboardInputReport.cs