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

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


当前回答

在代码:

Url.Content("~/");

MVC3 Razor语法:

@Url.Content("~/")

其他回答

依赖IIS的诀窍在于,IIS绑定可能不同于您的公共url(我指的是WCF),特别是对于多主场的生产机器。我倾向于使用配置显式地为外部目的定义“基本”url,因为这往往比从Request对象中提取它更成功。

在代码:

Url.Content("~/");

MVC3 Razor语法:

@Url.Content("~/")

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

System.Web.HttpRuntime.AppDomainAppVirtualPath

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

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

你可以有一个静态方法来查看HttpContext。当前,并根据主机ID决定使用哪个URL(开发或活动服务器)。HttpContext甚至可能提供一些更简单的方法来做到这一点,但这是我找到的第一个选项,它工作得很好。