Code:
/ FX-1434 / FX-1434 / 1.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
- SystemTcpConnection.cs
- FreezableDefaultValueFactory.cs
- uribuilder.cs
- EDesignUtil.cs
- SystemKeyConverter.cs
- LogicalExpr.cs
- PKCS1MaskGenerationMethod.cs
- CapabilitiesAssignment.cs
- XmlIlVisitor.cs
- DrawingAttributeSerializer.cs
- Typography.cs
- CustomAttributeBuilder.cs
- MulticastIPAddressInformationCollection.cs
- ObjectStateEntry.cs
- ObjectDataSourceEventArgs.cs
- basecomparevalidator.cs
- DbConnectionPoolOptions.cs
- DataGridViewAddColumnDialog.cs
- PartitionResolver.cs
- WriteableBitmap.cs
- DataBinding.cs
- ImageConverter.cs
- ResXFileRef.cs
- MulticastOption.cs
- NumberAction.cs
- EncryptedData.cs
- GroupBoxAutomationPeer.cs
- IdentitySection.cs
- DBSqlParserTableCollection.cs
- InternalEnumValidator.cs
- MetadataArtifactLoader.cs
- SBCSCodePageEncoding.cs
- ChildTable.cs
- SingleObjectCollection.cs
- CodePrimitiveExpression.cs
- TableLayoutPanelCellPosition.cs
- OdbcFactory.cs
- SettingsBindableAttribute.cs
- OracleFactory.cs
- FamilyMapCollection.cs
- Material.cs
- UnmanagedHandle.cs
- ListViewEditEventArgs.cs
- ErrorView.xaml.cs
- FrameworkContentElementAutomationPeer.cs
- CancelRequestedQuery.cs
- SQLSingle.cs
- FirewallWrapper.cs
- SocketConnection.cs
- CodeValidator.cs
- DataSourceXmlTextReader.cs
- SqlDataSourceStatusEventArgs.cs
- StandardCommands.cs
- SecureEnvironment.cs
- DataProtection.cs
- CultureMapper.cs
- ActiveXHelper.cs
- GridLengthConverter.cs
- DragEventArgs.cs
- TabControl.cs
- UnauthorizedAccessException.cs
- AdapterUtil.cs
- TransformerInfoCollection.cs
- UnionExpr.cs
- SqlDelegatedTransaction.cs
- CriticalExceptions.cs
- InlineObject.cs
- ProcessThreadCollection.cs
- ObjectStateFormatter.cs
- CookieProtection.cs
- DBNull.cs
- AccessibilityApplicationManager.cs
- SiteMapNode.cs
- HttpRawResponse.cs
- Selector.cs
- serverconfig.cs
- recordstatefactory.cs
- InvalidComObjectException.cs
- MethodExpr.cs
- SQLDoubleStorage.cs
- Brush.cs
- DebugInfoExpression.cs
- HelpProvider.cs
- SerializableAttribute.cs
- InstanceOwner.cs
- TailPinnedEventArgs.cs
- ImageKeyConverter.cs
- CompareValidator.cs
- ToolStripSystemRenderer.cs
- RegistrySecurity.cs
- StrictAndMessageFilter.cs
- SiteMembershipCondition.cs
- ByteFacetDescriptionElement.cs
- ListSourceHelper.cs
- FSWPathEditor.cs
- BinaryNode.cs
- VectorValueSerializer.cs
- Camera.cs
- BaseDataList.cs
- BindableAttribute.cs