如何快速确定我的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应用程序的回调目的。
当前回答
在。net core 3.1中,我使用了这种方法:
$"{Request.Scheme}://{Request.Host}{Url.Content("~/")}"
其他回答
在简单的html和ASP。NET或ASP。如果你正在使用标签:
<a href="~/#about">About us</a>
在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("~/");
}
}
在。net core 3.1中,我使用了这种方法:
$"{Request.Scheme}://{Request.Host}{Url.Content("~/")}"
将此函数添加到项目的静态类中,如实用程序类:
utility.cs内容:
public static class Utility
{
public static string GetBaseUrl()
{
var request = HttpContext.Current.Request;
var urlHelper = new UrlHelper(request.RequestContext);
var baseUrl = $"{request.Url.Scheme}://{request.Url.Authority}{urlHelper.Content("~")}";
return baseUrl;
}
}
在任何地方使用这段代码并享受它:
var baseUrl = Utility.GetBaseUrl();
对于url的应用程序别名,如http://example.com/appAlias/…你可以试试这个:
var req = HttpContext.Current.Request;
string baseUrl = string.Format("{0}://{1}/{2}", req.Url.Scheme, req.Url.Authority, req.ApplicationPath);