Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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 ( 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MsmqBindingElementBase.cs
- RegisteredHiddenField.cs
- LayoutManager.cs
- NegatedCellConstant.cs
- EndpointPerformanceCounters.cs
- ExpressionEvaluator.cs
- X509Certificate2Collection.cs
- FormatException.cs
- SingleStorage.cs
- UserControlAutomationPeer.cs
- SQLGuid.cs
- CallbackTimeoutsElement.cs
- PropertyConverter.cs
- TextOutput.cs
- ParallelDesigner.xaml.cs
- MD5.cs
- HtmlMeta.cs
- StylusLogic.cs
- SuppressMessageAttribute.cs
- SubtreeProcessor.cs
- BevelBitmapEffect.cs
- WindowPattern.cs
- DataGridTable.cs
- DocumentApplication.cs
- ObjectDataSourceSelectingEventArgs.cs
- WebPartHelpVerb.cs
- DataGridParentRows.cs
- DbCommandTree.cs
- RuleInfoComparer.cs
- CuspData.cs
- HttpValueCollection.cs
- EmbeddedMailObjectsCollection.cs
- RenderData.cs
- MetadataArtifactLoaderCompositeFile.cs
- StaticResourceExtension.cs
- ExpressionVisitor.cs
- UriTemplateVariableQueryValue.cs
- ChannelServices.cs
- ClientBuildManagerCallback.cs
- RadialGradientBrush.cs
- COM2TypeInfoProcessor.cs
- DnsPermission.cs
- StorageEntityTypeMapping.cs
- ListViewInsertedEventArgs.cs
- SoapConverter.cs
- ClientBuildManagerCallback.cs
- TableLayoutCellPaintEventArgs.cs
- cache.cs
- SamlAuthorizationDecisionClaimResource.cs
- TextBoxView.cs
- HttpCapabilitiesSectionHandler.cs
- PowerModeChangedEventArgs.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- RectangleHotSpot.cs
- QueryableDataSource.cs
- StaticResourceExtension.cs
- FixedHighlight.cs
- CannotUnloadAppDomainException.cs
- BitmapPalettes.cs
- VirtualPathProvider.cs
- AspCompat.cs
- EntitySqlQueryCacheEntry.cs
- Merger.cs
- OverflowException.cs
- TreeViewItemAutomationPeer.cs
- DispatcherEventArgs.cs
- PersonalizationAdministration.cs
- ContentPosition.cs
- XmlAnyElementAttribute.cs
- OciHandle.cs
- Variant.cs
- RegexNode.cs
- SecuritySessionClientSettings.cs
- Object.cs
- LineGeometry.cs
- ContextMarshalException.cs
- BamlResourceDeserializer.cs
- LinqDataSourceView.cs
- entityreference_tresulttype.cs
- DataGridAutoFormatDialog.cs
- WindowsStartMenu.cs
- HttpAsyncResult.cs
- TemplatePropertyEntry.cs
- ChtmlCalendarAdapter.cs
- ScriptManagerProxy.cs
- DetailsViewRow.cs
- BooleanExpr.cs
- PolicyAssertionCollection.cs
- ConfigXmlText.cs
- WebPartAuthorizationEventArgs.cs
- SectionRecord.cs
- ImageConverter.cs
- Row.cs
- InternalConfigSettingsFactory.cs
- UriPrefixTable.cs
- GridLengthConverter.cs
- StreamSecurityUpgradeProvider.cs
- VBIdentifierNameEditor.cs
- QuestionEventArgs.cs
- FixedLineResult.cs