Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / VirtualPathUtility.cs / 3 / VirtualPathUtility.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* VirtualPathUtility class
*
* Copyright (c) 2004 Microsoft Corporation
*/
namespace System.Web {
using System.Web.Util;
using System.Security.Permissions;
/*
* Code to perform virtual path operations
*/
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public static class VirtualPathUtility {
/* Discover virtual path type */
public static bool IsAbsolute(string virtualPath) {
VirtualPath virtualPathObject = VirtualPath.Create(virtualPath);
return !virtualPathObject.IsRelative && virtualPathObject.VirtualPathStringIfAvailable != null;
}
public static bool IsAppRelative(string virtualPath) {
VirtualPath virtualPathObject = VirtualPath.Create(virtualPath);
return virtualPathObject.VirtualPathStringIfAvailable == null;
}
/* Convert between virtual path types */
public static string ToAppRelative(string virtualPath) {
VirtualPath virtualPathObject = VirtualPath.CreateNonRelative(virtualPath);
return virtualPathObject.AppRelativeVirtualPathString;
}
public static string ToAppRelative(string virtualPath, string applicationPath) {
VirtualPath virtualPathObject = VirtualPath.CreateNonRelative(virtualPath);
// If it was already app relative, just return it
if (virtualPathObject.AppRelativeVirtualPathStringIfAvailable != null)
return virtualPathObject.AppRelativeVirtualPathStringIfAvailable;
VirtualPath appVirtualPath = VirtualPath.CreateAbsoluteTrailingSlash(applicationPath);
return UrlPath.MakeVirtualPathAppRelative(virtualPathObject.VirtualPathString,
appVirtualPath.VirtualPathString, true /*nullIfNotInApp*/);
}
public static string ToAbsolute(string virtualPath) {
VirtualPath virtualPathObject = VirtualPath.CreateNonRelative(virtualPath);
return virtualPathObject.VirtualPathString;
}
public static string ToAbsolute(string virtualPath, string applicationPath) {
VirtualPath virtualPathObject = VirtualPath.CreateNonRelative(virtualPath);
// If it was already absolute, just return it
if (virtualPathObject.VirtualPathStringIfAvailable != null)
return virtualPathObject.VirtualPathStringIfAvailable;
VirtualPath appVirtualPath = VirtualPath.CreateAbsoluteTrailingSlash(applicationPath);
return UrlPath.MakeVirtualPathAppAbsolute(virtualPathObject.AppRelativeVirtualPathString,
appVirtualPath.VirtualPathString);
}
/* Get pieces of virtual path */
public static string GetFileName(string virtualPath) {
VirtualPath virtualPathObject = VirtualPath.CreateNonRelative(virtualPath);
return virtualPathObject.FileName;
}
public static string GetDirectory(string virtualPath) {
VirtualPath virtualPathObject = VirtualPath.CreateNonRelative(virtualPath);
virtualPathObject = virtualPathObject.Parent;
if (virtualPathObject == null)
return null;
return virtualPathObject.VirtualPathStringWhicheverAvailable;
}
public static string GetExtension(string virtualPath) {
VirtualPath virtualPathObject = VirtualPath.Create(virtualPath);
return virtualPathObject.Extension;
}
/* Canonicalize virtual paths */
public static string AppendTrailingSlash(string virtualPath) {
return UrlPath.AppendSlashToPathIfNeeded(virtualPath);
}
public static string RemoveTrailingSlash(string virtualPath) {
return UrlPath.RemoveSlashFromPathIfNeeded(virtualPath);
}
// Removing Reduce per DevDiv 43118
#if OLD
public static string Reduce(string virtualPath) {
VirtualPath virtualPathObject = VirtualPath.CreateNonRelative(virtualPath);
return virtualPathObject.VirtualPathString;
}
#endif
/* Work with multiple virtual paths */
public static string Combine(string basePath, string relativePath) {
VirtualPath virtualPath = VirtualPath.Combine(VirtualPath.CreateNonRelative(basePath),
VirtualPath.Create(relativePath));
return virtualPath.VirtualPathStringWhicheverAvailable;
}
public static string MakeRelative(string fromPath, string toPath) {
return UrlPath.MakeRelative(fromPath, toPath);
}
}
}
// 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
- XmlSchemaObjectTable.cs
- ExpressionLink.cs
- PriorityQueue.cs
- XmlNavigatorStack.cs
- CLSCompliantAttribute.cs
- Column.cs
- ArrayEditor.cs
- DependentList.cs
- sqlser.cs
- UInt64.cs
- ApplicationFileParser.cs
- SQLDateTimeStorage.cs
- MemoryPressure.cs
- Win32MouseDevice.cs
- SqlParameterizer.cs
- Quaternion.cs
- RequiredFieldValidator.cs
- DataGridCaption.cs
- DataGridViewColumnStateChangedEventArgs.cs
- BaseValidator.cs
- JumpPath.cs
- ValidationError.cs
- XmlSchemaException.cs
- DataGridViewCellPaintingEventArgs.cs
- CrossContextChannel.cs
- XamlTemplateSerializer.cs
- ToolStripPanelRenderEventArgs.cs
- ReservationCollection.cs
- ObjectAnimationUsingKeyFrames.cs
- DeflateEmulationStream.cs
- TraceLevelStore.cs
- TargetControlTypeCache.cs
- ActivityWithResultWrapper.cs
- CompilerCollection.cs
- TypeUtil.cs
- Style.cs
- IntegerFacetDescriptionElement.cs
- MachinePropertyVariants.cs
- PlatformCulture.cs
- Control.cs
- ModuleElement.cs
- RewritingValidator.cs
- PropertyGridEditorPart.cs
- DataServiceConfiguration.cs
- MsmqIntegrationSecurity.cs
- IgnoreFlushAndCloseStream.cs
- QueryableDataSource.cs
- Dispatcher.cs
- MatrixConverter.cs
- COM2ComponentEditor.cs
- SspiHelper.cs
- SrgsElementFactory.cs
- SecurityContext.cs
- TextTreeTextBlock.cs
- Encoding.cs
- DeploymentSectionCache.cs
- PeerTransportSecurityElement.cs
- CompositeActivityTypeDescriptorProvider.cs
- ScriptRef.cs
- ImageClickEventArgs.cs
- DocumentCollection.cs
- DataObjectFieldAttribute.cs
- DebugInfoGenerator.cs
- FixedTextPointer.cs
- ClosureBinding.cs
- ToolStripItemRenderEventArgs.cs
- DynamicPropertyHolder.cs
- PartialList.cs
- ListItemCollection.cs
- ActivityExecutionWorkItem.cs
- GradientBrush.cs
- BuildDependencySet.cs
- CodeParameterDeclarationExpression.cs
- PersistenceProviderBehavior.cs
- HandlerBase.cs
- Identity.cs
- RtfControls.cs
- DataGridViewRowHeaderCell.cs
- UIntPtr.cs
- AssemblyLoader.cs
- SQLDouble.cs
- ReferenceEqualityComparer.cs
- StreamGeometryContext.cs
- StatusBarPanel.cs
- AsymmetricAlgorithm.cs
- PingReply.cs
- ContextStack.cs
- MediaCommands.cs
- HelpPage.cs
- PointAnimationClockResource.cs
- BitmapSizeOptions.cs
- SamlSerializer.cs
- RowSpanVector.cs
- GroupByExpressionRewriter.cs
- WebPart.cs
- CalendarTable.cs
- ViewBox.cs
- InProcStateClientManager.cs
- FrameworkContentElement.cs
- GenericXmlSecurityToken.cs