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

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


当前回答

在代码:

Url.Content("~/");

MVC3 Razor语法:

@Url.Content("~/")

其他回答

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

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

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

假设你有一个Request对象可用,你可以使用:

string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"));

如果它不可用,你可以通过上下文获得它:

var request = HttpContext.Current.Request

网页本身:

<input type="hidden" id="basePath" value="@string.Format("{0}://{1}{2}",
  HttpContext.Current.Request.Url.Scheme,
  HttpContext.Current.Request.Url.Authority,
  Url.Content("~"))" />

在javascript中:

function getReportFormGeneratorPath() {
  var formPath = $('#reportForm').attr('action');
  var newPath = $("#basePath").val() + formPath;
  return newPath;
}

这适用于我的MVC项目,希望它有帮助

也许这是对这里发布的答案的扩展或修改,但我简单地使用了下面这行,它是有效的:

Request.Url.GetLeftPart(UriPartial.Authority) + Url.Content("~")

当我的路径是:http://host/iis_foldername/controller/action 然后我收到:http://host/iis_foldername/