Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Configuration / VirtualDirectoryMapping.cs / 1305376 / 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.
//
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
- PassportIdentity.cs
- DesignBindingPicker.cs
- SQLStringStorage.cs
- FileRecordSequence.cs
- Triangle.cs
- XmlSerializationGeneratedCode.cs
- SymLanguageVendor.cs
- MetadataItem_Static.cs
- TypeContext.cs
- XmlILCommand.cs
- RoleGroupCollection.cs
- ObjectResult.cs
- UriParserTemplates.cs
- Keyboard.cs
- AuthorizationRule.cs
- DataRowComparer.cs
- MenuCommand.cs
- Helpers.cs
- SourceFileBuildProvider.cs
- EncodingInfo.cs
- QilName.cs
- CheckBoxRenderer.cs
- FactoryId.cs
- MainMenu.cs
- SystemIcmpV6Statistics.cs
- RequiredFieldValidator.cs
- TextFindEngine.cs
- InfoCardTrace.cs
- xamlnodes.cs
- cookieexception.cs
- StrokeCollectionDefaultValueFactory.cs
- CatalogPart.cs
- InkPresenterAutomationPeer.cs
- TextMessageEncodingElement.cs
- RuntimeArgumentHandle.cs
- ToolStripCustomTypeDescriptor.cs
- WebPartRestoreVerb.cs
- RightNameExpirationInfoPair.cs
- CngKeyBlobFormat.cs
- KeyNotFoundException.cs
- MessageQueueCriteria.cs
- SQLString.cs
- ExtensionWindowResizeGrip.cs
- XmlCountingReader.cs
- RSAProtectedConfigurationProvider.cs
- SafeTimerHandle.cs
- _WinHttpWebProxyDataBuilder.cs
- Common.cs
- BuildResultCache.cs
- TextAnchor.cs
- TextRunCacheImp.cs
- EmissiveMaterial.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- BinHexEncoding.cs
- DbUpdateCommandTree.cs
- util.cs
- UnauthorizedWebPart.cs
- MatcherBuilder.cs
- TypeCollectionPropertyEditor.cs
- SqlCacheDependencySection.cs
- WebBrowserEvent.cs
- WindowsUpDown.cs
- ToolStripItem.cs
- _NestedSingleAsyncResult.cs
- RSAProtectedConfigurationProvider.cs
- TypeFieldSchema.cs
- RegexCharClass.cs
- ImageFormatConverter.cs
- MethodExecutor.cs
- EventProxy.cs
- HMACRIPEMD160.cs
- DeflateStream.cs
- TreeViewImageGenerator.cs
- Accessors.cs
- GetPageCompletedEventArgs.cs
- ImageSourceConverter.cs
- CommandTreeTypeHelper.cs
- SmiEventSink.cs
- TCEAdapterGenerator.cs
- EventToken.cs
- WebPartCloseVerb.cs
- ExtentKey.cs
- CustomError.cs
- ConfigsHelper.cs
- XamlStream.cs
- ContentTextAutomationPeer.cs
- HttpRuntimeSection.cs
- WebConfigurationHost.cs
- ScrollItemPatternIdentifiers.cs
- Form.cs
- HelpKeywordAttribute.cs
- HitTestDrawingContextWalker.cs
- DataGridViewTextBoxColumn.cs
- Int32.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- securitymgrsite.cs
- RenderOptions.cs
- grammarelement.cs
- Vector3D.cs
- BindToObject.cs