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
- RegistryKey.cs
- DnsEndpointIdentity.cs
- MiniConstructorInfo.cs
- ArraySortHelper.cs
- BaseCodeDomTreeGenerator.cs
- Quad.cs
- ActiveXSite.cs
- BlurBitmapEffect.cs
- _AcceptOverlappedAsyncResult.cs
- AtomServiceDocumentSerializer.cs
- XmlSchemaFacet.cs
- RootBrowserWindowAutomationPeer.cs
- DataGridViewSelectedCellCollection.cs
- XmlAnyElementAttributes.cs
- OutputCacheSection.cs
- XmlAttributeCache.cs
- Type.cs
- UniqueEventHelper.cs
- WindowsListViewGroup.cs
- WebScriptEnablingElement.cs
- ProfileGroupSettings.cs
- CorrelationToken.cs
- WinFormsSpinner.cs
- OutputCacheProfile.cs
- Timer.cs
- ItemCheckedEvent.cs
- LayoutEditorPart.cs
- PropertyMetadata.cs
- WizardForm.cs
- WindowsFormsLinkLabel.cs
- CoreSwitches.cs
- FileStream.cs
- WebServiceClientProxyGenerator.cs
- TdsParserHelperClasses.cs
- HttpInputStream.cs
- ListViewInsertionMark.cs
- ListViewUpdatedEventArgs.cs
- TreeViewHitTestInfo.cs
- SmtpNtlmAuthenticationModule.cs
- MemoryStream.cs
- StoragePropertyMapping.cs
- PolyLineSegment.cs
- WindowsContainer.cs
- XmlSchemaObjectCollection.cs
- AttachedAnnotation.cs
- propertyentry.cs
- WebPartTracker.cs
- SerTrace.cs
- DesignParameter.cs
- InvokeMemberBinder.cs
- ButtonStandardAdapter.cs
- DataServiceHost.cs
- WindowVisualStateTracker.cs
- CultureInfoConverter.cs
- PropagatorResult.cs
- BoundField.cs
- ReadOnlyHierarchicalDataSourceView.cs
- ToolTip.cs
- SessionPageStateSection.cs
- OperationCanceledException.cs
- ApplicationGesture.cs
- DesignerVerbCollection.cs
- GridViewRowEventArgs.cs
- LogLogRecordHeader.cs
- PropertyStore.cs
- WindowsComboBox.cs
- DbgCompiler.cs
- ObservableCollectionDefaultValueFactory.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- IntSumAggregationOperator.cs
- pingexception.cs
- EventSchemaTraceListener.cs
- _PooledStream.cs
- ProfileManager.cs
- EditableTreeList.cs
- MenuBindingsEditor.cs
- TripleDESCryptoServiceProvider.cs
- CodeGenerator.cs
- TemplateControl.cs
- AnnotationObservableCollection.cs
- OracleDataReader.cs
- ParameterModifier.cs
- RegexTree.cs
- PeerTransportCredentialType.cs
- ItemTypeToolStripMenuItem.cs
- StreamInfo.cs
- FixedSOMElement.cs
- XmlParserContext.cs
- ArraySet.cs
- Label.cs
- LocalizabilityAttribute.cs
- ActivityStateRecord.cs
- RenderDataDrawingContext.cs
- ListBox.cs
- GlyphingCache.cs
- ScriptResourceInfo.cs
- NativeMethods.cs
- altserialization.cs
- SystemFonts.cs
- XmlSerializationReader.cs