如何快速确定我的ASP的根URL是什么?NET MVC应用程序?例如,如果IIS设置为在http://example.com/foo/bar上为我的应用程序服务,那么我希望能够以一种可靠的方式获得该URL,而不涉及从请求中获取当前URL,并以某种脆弱的方式将其分割,如果我重新路由我的操作,这种方式就会中断。
我需要基本URL的原因是这个web应用程序调用另一个需要根的调用者web应用程序的回调目的。
如何快速确定我的ASP的根URL是什么?NET MVC应用程序?例如,如果IIS设置为在http://example.com/foo/bar上为我的应用程序服务,那么我希望能够以一种可靠的方式获得该URL,而不涉及从请求中获取当前URL,并以某种脆弱的方式将其分割,如果我重新路由我的操作,这种方式就会中断。
我需要基本URL的原因是这个web应用程序调用另一个需要根的调用者web应用程序的回调目的。
当前回答
下面的代码片段在MVC4中很好地为我工作,并且不需要可用的HttpContext:
System.Web.HttpRuntime.AppDomainAppVirtualPath
其他回答
我把它放在我的_Layout.cshtml的头部
<base href="~/" />
下面的代码片段在MVC4中很好地为我工作,并且不需要可用的HttpContext:
System.Web.HttpRuntime.AppDomainAppVirtualPath
@{
var baseurl = Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port + Url.Content("~");
}
@baseurl
——输出 http://localhost:49626/TEST/
在代码:
Url.Content("~/");
MVC3 Razor语法:
@Url.Content("~/")
在MVC _Layout.cshtml中:
<base href="@Request.GetBaseUrl()" />
我们就是这么用的!
public static class ExtensionMethods
{
public static string GetBaseUrl(this HttpRequestBase request)
{
if (request.Url == (Uri) null)
return string.Empty;
else
return request.Url.Scheme + "://" + request.Url.Authority + VirtualPathUtility.ToAbsolute("~/");
}
}