/* 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); }
internal static VirtualPath Combine(VirtualPath v1, VirtualPath v2) { if (v1 == null) { v1 = HttpRuntime.AppDomainAppVirtualPathObject; } if (v1 == null) { v2.FailIfRelativePath(); return(v2); } return(v1.Combine(v2)); }
internal static VirtualPath Combine(VirtualPath v1, VirtualPath v2) { // If the first is null, use the app root instead if (v1 == null) { v1 = HttpRuntimePathUtil.AppDomainAppVirtualPathObject; } // If the first is still null, return the second, unless it's relative if (v1 == null) { v2.FailIfRelativePath(); return(v2); } return(v1.Combine(v2)); }
internal String MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping) { if (_wr == null) throw new HttpException(SR.GetString(SR.Cannot_map_path_without_context)); // treat null as "." // if (virtualPath == null) virtualPath = VirtualPath.Create("."); VirtualPath originalVirtualPath = virtualPath; // remember for patch-up at the end // Combine it with the base if one was passed in if (baseVirtualDir != null) { virtualPath = baseVirtualDir.Combine(virtualPath); } if (!allowCrossAppMapping) virtualPath.FailIfNotWithinAppRoot(); string realPath = virtualPath.MapPathInternal(); // patch up the result for Everett combatibility (VSWhidbey 319826) if (virtualPath.VirtualPathString == "/" && originalVirtualPath.VirtualPathString != "/" && !originalVirtualPath.HasTrailingSlash && UrlPath.PathEndsWithExtraSlash(realPath)) { realPath = realPath.Substring(0, realPath.Length - 1); } InternalSecurityPermissions.PathDiscovery(realPath).Demand(); return realPath; }
internal static VirtualPath Combine(VirtualPath v1, VirtualPath v2) { // If the first is null, use the app root instead if (v1 == null) { v1 = HttpRuntime.AppDomainAppVirtualPathObject; } // If the first is still null, return the second, unless it's relative if (v1 == null) { v2.FailIfRelativePath(); return v2; } return v1.Combine(v2); }
internal static string MapPathInternal(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping) { Debug.Assert(baseVirtualDir != null, "baseVirtualDir != null"); // Combine it with the base and reduce virtualPath = baseVirtualDir.Combine(virtualPath); if (!allowCrossAppMapping && !virtualPath.IsWithinAppRoot) throw new ArgumentException(SR.GetString(SR.Cross_app_not_allowed, virtualPath)); return MapPathInternal(virtualPath); }
internal static string MapPathInternal(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping) { virtualPath = baseVirtualDir.Combine(virtualPath); if (!allowCrossAppMapping && !virtualPath.IsWithinAppRoot) { throw new ArgumentException(System.Web.SR.GetString("Cross_app_not_allowed", new object[] { virtualPath })); } return MapPathInternal(virtualPath); }
internal string MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping) { if (this._wr == null) { throw new HttpException(System.Web.SR.GetString("Cannot_map_path_without_context")); } if (virtualPath == null) { virtualPath = VirtualPath.Create("."); } VirtualPath path = virtualPath; if (baseVirtualDir != null) { virtualPath = baseVirtualDir.Combine(virtualPath); } if (!allowCrossAppMapping) { virtualPath.FailIfNotWithinAppRoot(); } string str = virtualPath.MapPathInternal(); if (((virtualPath.VirtualPathString == "/") && (path.VirtualPathString != "/")) && (!path.HasTrailingSlash && UrlPath.PathEndsWithExtraSlash(str))) { str = str.Substring(0, str.Length - 1); } InternalSecurityPermissions.PathDiscovery(str).Demand(); return str; }