使用ASP.NET Core获取绝对URL

问题描述 投票:61回答:8

在MVC 5中,我具有以下扩展方法来生成绝对URL,而不是相对的URL:

public static class UrlHelperExtensions
{
    public static string AbsoluteAction(
        this UrlHelper url,
        string actionName, 
        string controllerName, 
        object routeValues = null)
    {
        string scheme = url.RequestContext.HttpContext.Request.Url.Scheme;
        return url.Action(actionName, controllerName, routeValues, scheme);
    }

    public static string AbsoluteContent(
        this UrlHelper url,
        string contentPath)
    {
        return new Uri(url.RequestContext.HttpContext.Request.Url, url.Content(contentPath)).ToString();
    }

    public static string AbsoluteRouteUrl(
        this UrlHelper url,
        string routeName,
        object routeValues = null)
    {
        string scheme = url.RequestContext.HttpContext.Request.Url.Scheme;
        return url.RouteUrl(routeName, routeValues, scheme);
    }
}

在ASP.NET Core中相当于什么?

  • UrlHelper.RequestContext不再存在。
  • 您将不再拥有HttpContext,因为不再有静态的HttpContext.Current属性。

据我所知,您现在还需要传递HttpContextHttpRequest对象。我对吗?有什么方法可以控制当前请求?

我什至在正确的轨道上,现在域也应该是一个环境变量,该变量简单地附加到相对URL后吗?这会是更好的方法吗?

c# asp.net-core
8个回答
© www.soinside.com 2019 - 2024. All rights reserved.