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
- PopupEventArgs.cs
- _KerberosClient.cs
- ContextMenu.cs
- BorderSidesEditor.cs
- wgx_exports.cs
- Logging.cs
- DnsPermission.cs
- CurrentTimeZone.cs
- DateBoldEvent.cs
- HostVisual.cs
- BamlLocalizableResourceKey.cs
- XmlElementElementCollection.cs
- PointValueSerializer.cs
- ProxyWebPartManager.cs
- SolidColorBrush.cs
- DocumentsTrace.cs
- TextModifierScope.cs
- HttpChannelHelper.cs
- ResizingMessageFilter.cs
- SetterBase.cs
- ComboBoxRenderer.cs
- LassoSelectionBehavior.cs
- DataMisalignedException.cs
- DataGridView.cs
- GeneratedView.cs
- UserValidatedEventArgs.cs
- TreeBuilderXamlTranslator.cs
- CompareInfo.cs
- CodeMemberField.cs
- OleStrCAMarshaler.cs
- QilChoice.cs
- InputGestureCollection.cs
- SelectionItemProviderWrapper.cs
- FlowDocumentFormatter.cs
- DataServiceQueryException.cs
- CompilerWrapper.cs
- EmptyEnumerator.cs
- RegisteredScript.cs
- Control.cs
- AppDomainShutdownMonitor.cs
- BaseCodePageEncoding.cs
- ElementHostPropertyMap.cs
- TemplateControlBuildProvider.cs
- SmtpNegotiateAuthenticationModule.cs
- StringFormat.cs
- ListControl.cs
- bindurihelper.cs
- CompiledQuery.cs
- InternalControlCollection.cs
- WindowsEditBox.cs
- ZipIOExtraFieldZip64Element.cs
- StrokeRenderer.cs
- CrossSiteScriptingValidation.cs
- ArraySortHelper.cs
- IntSecurity.cs
- ListArgumentProvider.cs
- CompensationTokenData.cs
- ConfigurationManagerInternalFactory.cs
- OleCmdHelper.cs
- MdImport.cs
- ExpandedWrapper.cs
- TextEmbeddedObject.cs
- ProcessHostConfigUtils.cs
- oledbmetadatacolumnnames.cs
- Utilities.cs
- CroppedBitmap.cs
- RotationValidation.cs
- SingleSelectRootGridEntry.cs
- CommonXSendMessage.cs
- SiteMembershipCondition.cs
- XmlDataSourceView.cs
- WmlLabelAdapter.cs
- TypeSystem.cs
- Binding.cs
- WebConfigurationManager.cs
- CssStyleCollection.cs
- Base64Decoder.cs
- CryptoProvider.cs
- RadialGradientBrush.cs
- XComponentModel.cs
- AccessedThroughPropertyAttribute.cs
- NameScope.cs
- AccessDataSource.cs
- TransactionFlowBindingElementImporter.cs
- ResourceKey.cs
- DataBindingCollection.cs
- Transactions.cs
- CompensationDesigner.cs
- TextBoxAutoCompleteSourceConverter.cs
- PeerNodeTraceRecord.cs
- InvalidCastException.cs
- TraceContext.cs
- DefaultTextStore.cs
- RoleBoolean.cs
- LocalizableResourceBuilder.cs
- WindowsSolidBrush.cs
- RtfToken.cs
- SecurityProtocolFactory.cs
- InstanceDescriptor.cs
- CanExecuteRoutedEventArgs.cs