Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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 (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"); } } } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GenericsNotImplementedException.cs
- AssemblyBuilderData.cs
- _Connection.cs
- Encoding.cs
- OleDbPermission.cs
- InfoCardKeyedHashAlgorithm.cs
- AggregationMinMaxHelpers.cs
- RolePrincipal.cs
- ExportOptions.cs
- BulletChrome.cs
- DecimalConstantAttribute.cs
- OpenTypeLayout.cs
- PrivacyNoticeBindingElementImporter.cs
- MaterialGroup.cs
- PaperSize.cs
- TimelineClockCollection.cs
- OutputChannel.cs
- CheckBoxRenderer.cs
- TrackingProvider.cs
- MouseActionValueSerializer.cs
- InternalBufferManager.cs
- GACMembershipCondition.cs
- ResourcesBuildProvider.cs
- ParentQuery.cs
- ExplicitDiscriminatorMap.cs
- XhtmlConformanceSection.cs
- BinaryParser.cs
- MsmqHostedTransportManager.cs
- Serializer.cs
- HtmlProps.cs
- AuthenticatingEventArgs.cs
- BackStopAuthenticationModule.cs
- ListBox.cs
- DataError.cs
- Int32CAMarshaler.cs
- XmlNamespaceMapping.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- XmlSchemaSimpleTypeList.cs
- TextPenaltyModule.cs
- DesignBindingValueUIHandler.cs
- SerializationObjectManager.cs
- TypedDataSourceCodeGenerator.cs
- UpdatePanelTrigger.cs
- ToolBarTray.cs
- Random.cs
- StackOverflowException.cs
- Error.cs
- RemoteWebConfigurationHost.cs
- ClientSettingsSection.cs
- DbCommandDefinition.cs
- SafeCoTaskMem.cs
- ReaderWriterLockWrapper.cs
- RichTextBox.cs
- XmlAttributeCollection.cs
- ListViewItemSelectionChangedEvent.cs
- AnnotationStore.cs
- SourceElementsCollection.cs
- PerfCounters.cs
- APCustomTypeDescriptor.cs
- UndoUnit.cs
- UnSafeCharBuffer.cs
- ObjectToModelValueConverter.cs
- ConfigXmlSignificantWhitespace.cs
- MainMenu.cs
- PersonalizationAdministration.cs
- ContentPosition.cs
- XmlArrayAttribute.cs
- RuntimeCompatibilityAttribute.cs
- HtmlHead.cs
- StorageComplexPropertyMapping.cs
- DragCompletedEventArgs.cs
- EpmSyndicationContentDeSerializer.cs
- TimeStampChecker.cs
- WindowsGraphics.cs
- TextMarkerSource.cs
- BaseProcessor.cs
- LineProperties.cs
- XpsException.cs
- TypeUsageBuilder.cs
- TripleDES.cs
- XmlObjectSerializerWriteContext.cs
- SynchronizingStream.cs
- DataBoundControl.cs
- StoreUtilities.cs
- ADMembershipUser.cs
- ValidatorCompatibilityHelper.cs
- CreateParams.cs
- UniqueEventHelper.cs
- Connector.cs
- BitmapSource.cs
- Frame.cs
- DataControlCommands.cs
- InvalidOperationException.cs
- SessionStateItemCollection.cs
- GeometryHitTestResult.cs
- PeerResolverMode.cs
- HttpResponseHeader.cs
- odbcmetadatafactory.cs
- RtfControlWordInfo.cs
- DbParameterCollectionHelper.cs