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
- TextureBrush.cs
- SignedXml.cs
- GatewayIPAddressInformationCollection.cs
- SuspendDesigner.cs
- RegularExpressionValidator.cs
- PeerDefaultCustomResolverClient.cs
- Attribute.cs
- RegistrationServices.cs
- HostedHttpRequestAsyncResult.cs
- DataGridViewRowPrePaintEventArgs.cs
- CustomAttributeBuilder.cs
- EditingCoordinator.cs
- ToolStripItemTextRenderEventArgs.cs
- NetworkCredential.cs
- CopyAction.cs
- ProfileParameter.cs
- TerminatorSinks.cs
- OleCmdHelper.cs
- DbConnectionPoolGroupProviderInfo.cs
- SecurityDescriptor.cs
- DisplayNameAttribute.cs
- XmlNodeChangedEventManager.cs
- WinInet.cs
- UpdatePanelTrigger.cs
- EnumType.cs
- EditCommandColumn.cs
- ConfigXmlText.cs
- NoResizeHandleGlyph.cs
- WorkflowFormatterBehavior.cs
- BindingMemberInfo.cs
- TypefaceCollection.cs
- SortableBindingList.cs
- TextContainerHelper.cs
- TemplateInstanceAttribute.cs
- ScrollBarRenderer.cs
- ContourSegment.cs
- MD5CryptoServiceProvider.cs
- RegexCompiler.cs
- SecurityCriticalDataForSet.cs
- DesignerExtenders.cs
- MarkupWriter.cs
- TdsValueSetter.cs
- TemplateBindingExpression.cs
- TransformerConfigurationWizardBase.cs
- DebugView.cs
- MouseGestureValueSerializer.cs
- MediaSystem.cs
- BufferedResponseStream.cs
- PathFigureCollection.cs
- NetSectionGroup.cs
- ZipIOModeEnforcingStream.cs
- TypeRefElement.cs
- EnumerableRowCollection.cs
- KnownTypesHelper.cs
- CombinedGeometry.cs
- Scheduler.cs
- SpellCheck.cs
- DataGridViewComboBoxColumn.cs
- odbcmetadatafactory.cs
- typedescriptorpermission.cs
- InputLangChangeEvent.cs
- ClientUrlResolverWrapper.cs
- PropertyRef.cs
- PersistenceTypeAttribute.cs
- SqlDataSourceEnumerator.cs
- DbUpdateCommandTree.cs
- XmlParser.cs
- XmlILAnnotation.cs
- RSAPKCS1SignatureFormatter.cs
- InternalDispatchObject.cs
- NameValueFileSectionHandler.cs
- CompositeDataBoundControl.cs
- FixUpCollection.cs
- SemaphoreSecurity.cs
- BitConverter.cs
- BitmapMetadataEnumerator.cs
- DataListItemCollection.cs
- EntityKeyElement.cs
- TripleDESCryptoServiceProvider.cs
- TextRangeEditTables.cs
- ControlIdConverter.cs
- SocketPermission.cs
- AncillaryOps.cs
- Gdiplus.cs
- KeysConverter.cs
- InstallerTypeAttribute.cs
- SamlAuthorizationDecisionClaimResource.cs
- ClientUtils.cs
- HtmlInputSubmit.cs
- NativeCppClassAttribute.cs
- externdll.cs
- _NegoStream.cs
- InputLanguageManager.cs
- RowUpdatingEventArgs.cs
- DrawingServices.cs
- MenuCommandsChangedEventArgs.cs
- ScriptReferenceEventArgs.cs
- ArgumentsParser.cs
- CategoryGridEntry.cs
- CodeTypeReference.cs