Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- DictionaryTraceRecord.cs
- DocumentEventArgs.cs
- Stack.cs
- FileDialogPermission.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- ConnectionStringsExpressionBuilder.cs
- ImageAutomationPeer.cs
- Lease.cs
- ReflectTypeDescriptionProvider.cs
- OracleParameterCollection.cs
- InvalidTimeZoneException.cs
- AppearanceEditorPart.cs
- DetailsViewDeleteEventArgs.cs
- HttpListenerPrefixCollection.cs
- COMException.cs
- Splitter.cs
- ExtenderHelpers.cs
- ProxyAttribute.cs
- SharedPerformanceCounter.cs
- IndicCharClassifier.cs
- IsolatedStoragePermission.cs
- ServiceTimeoutsElement.cs
- ComboBoxItem.cs
- EventMap.cs
- PreservationFileWriter.cs
- NCryptSafeHandles.cs
- CodeSubDirectory.cs
- ButtonChrome.cs
- ReflectionTypeLoadException.cs
- TransformerInfoCollection.cs
- DataGridRelationshipRow.cs
- PersistStreamTypeWrapper.cs
- TreeViewImageKeyConverter.cs
- OutputCacheModule.cs
- HttpDictionary.cs
- SortedSet.cs
- SafeNativeMethods.cs
- ComboBox.cs
- EditBehavior.cs
- SQLDecimalStorage.cs
- AssociationType.cs
- PerformanceCounterManager.cs
- TableLayoutSettings.cs
- ListItemParagraph.cs
- Line.cs
- IxmlLineInfo.cs
- odbcmetadatacollectionnames.cs
- RelationshipWrapper.cs
- NegotiationTokenAuthenticator.cs
- Vector3DIndependentAnimationStorage.cs
- TopClause.cs
- WorkflowItemsPresenter.cs
- ModelEditingScope.cs
- DataGridViewEditingControlShowingEventArgs.cs
- Freezable.cs
- unsafenativemethodstextservices.cs
- WorkflowInstanceExtensionManager.cs
- GeometryDrawing.cs
- SmiEventSink.cs
- OutputScopeManager.cs
- MouseCaptureWithinProperty.cs
- ToolStripDropTargetManager.cs
- TextTreeObjectNode.cs
- NameValueConfigurationElement.cs
- ClockController.cs
- HashStream.cs
- SuppressIldasmAttribute.cs
- X509RecipientCertificateServiceElement.cs
- CustomSignedXml.cs
- XmlImplementation.cs
- EntityDataSourceContainerNameItem.cs
- DataGridSortCommandEventArgs.cs
- BamlTreeMap.cs
- WasHttpHandlersInstallComponent.cs
- TdsParserStateObject.cs
- ButtonBaseAdapter.cs
- SmtpDigestAuthenticationModule.cs
- X509CertificateChain.cs
- SqlConnectionFactory.cs
- UserControl.cs
- CheckBoxList.cs
- TemplateBuilder.cs
- StylusPointProperty.cs
- ModelFunction.cs
- GorillaCodec.cs
- NoPersistScope.cs
- Help.cs
- FunctionDetailsReader.cs
- TypefaceMap.cs
- XLinq.cs
- BaseProcessProtocolHandler.cs
- _emptywebproxy.cs
- ClaimTypes.cs
- ParserExtension.cs
- CompositionDesigner.cs
- SystemDiagnosticsSection.cs
- NavigateUrlConverter.cs
- Stroke.cs
- DataControlFieldCell.cs
- _ShellExpression.cs