如何快速确定我的ASP的根URL是什么?NET MVC应用程序?例如,如果IIS设置为在http://example.com/foo/bar上为我的应用程序服务,那么我希望能够以一种可靠的方式获得该URL,而不涉及从请求中获取当前URL,并以某种脆弱的方式将其分割,如果我重新路由我的操作,这种方式就会中断。

我需要基本URL的原因是这个web应用程序调用另一个需要根的调用者web应用程序的回调目的。


当前回答

在。net core 3.1中,我使用了这种方法:

$"{Request.Scheme}://{Request.Host}{Url.Content("~/")}"

其他回答

对于一个绝对的基本URL使用这个。同时支持HTTP和HTTPS。

new Uri(Request.Url, Url.Content("~"))
@{
    var baseurl = Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port + Url.Content("~");
}
@baseurl

——输出 http://localhost:49626/TEST/

ASP。NET MVC 4有点不同:

string url = HttpContext.Request.Url.AbsoluteUri;

也许这是一个更好的解决方案。

@{
   var baseUrl = @Request.Host("/");
}

使用

<a href="@baseUrl" class="link">Base URL</a>

下面的代码片段在MVC4中很好地为我工作,并且不需要可用的HttpContext:

System.Web.HttpRuntime.AppDomainAppVirtualPath