如何获取ASP.NET应用程序的完整虚拟路径
如何知道我的应用程序当前托管的完整虚拟路径?例如:如何获取ASP.NET应用程序的完整虚拟路径
http://www.mysite.com/myApp
或
http://www.mysite.com/myApp/mySubApp
我知道的HttpRequest的应用程序的路径,但它只返回我的应用程序目前正在托管文件夹的名称,但我如何获得初始的一部分?
路径的域名部分并不是应用程序本身的属性,而是取决于请求的URL。您可能能够从多个不同的主机名称访问单个网站。为了获得与当前请求相关,与当前应用程序的虚拟路径沿着域名,你可以这样做:
Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath
从技术上讲,“应用”是在IIS和Request.ApplicationPath
返回定义虚拟目录确切的说。如果你想在当前请求被处理的文件夹,你可以这样做:
VirtualPathUtility.GetDirectory(Request.Path)
ASP.NET不知道如何将您的子应用程序从一个更大的应用区别,如果它没有定义作为IIS中的虚拟目录。如果不在IIS中注册,它只会将整个事件视为单个应用程序。
要完全回答这个问题,我想你需要描述你真正想要做的,什么是使你的路径值“未知”
通常当我遇到路径查找问题这篇博客文章由Rick Strahl cle ars的东西适合我:http://www.west-wind.com/weblog/posts/269.aspx
可能必须混合和匹配才能得到你想要的。
的链接断开 – 2016-04-28 13:55:47
Request.Url
它包含了你可以考虑使用,见下图几点:
下面的代码将解决这个目的,但你必须有两个做了一下调整场景类型:
- 作为独立的Web应用程序托管。
-
托管为Web应用程序内的虚拟应用程序。
HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority)+ HttpRuntime.AppDomainAppVirtualPath;
在.NET 4中。5
VirtualPathUtility.ToAppRelative(path)
如果应用程序是在IIS虚拟目录,但我们请求的页面是几个文件夹内,但我们希望路径包括虚拟目录,但没有文件夹,如何做到这一点? – Krunal 2013-10-17 09:31:40
@ Krunal [HttpRuntime.AppDomainAppVirtualPath](https://msdn.microsoft.com/en-us/library/system.web.httpruntime.appdomainappvirtualpath(v = vs.110).aspx)或Request.ApplicationPath – jproch 2016-11-11 15:48:04