LinkGenerator GetPathByPage不返回完整的Uri

时间:2019-03-20 20:12:32

标签: asp.net-core asp.net-core-mvc

我在ASP.NET Core 2.2 MVC项目中的EmailSender服务中使用LinkGenerator。它首先返回Null值,直到我确定需要在定义中包括该区域。但是,URL仍然没有提供我期望的服务器信息。

它生成如下所示的网址:"/Identity/Account/Login...

我希望这样:"https://{hostName}/Identity/Account/Login..."

我的解决方法是连接来自httpContextAccessor的值。但是,这似乎是骗人的。有人可以指导我该怎么做吗?

解决(不好):

var callbackUrl = $"{httpContextAccessor.HttpContext.Request.Scheme}://" +
                  $"{httpContextAccessor.HttpContext.Request.Host}" +
                  linkGenerator.GetPathByPage(httpContextAccessor.HttpContext,
                            "/Account/Login", null, new {area = "Identity", userId = user.Id});

1 个答案:

答案 0 :(得分:1)

通过设计linkGenerator.GetPathByPage将返回相对路径。如果您需要包含UriScheme的完整Host,则必须使用另一种方法GetUriByPage LinkGenerator也提供了以下内容:

var callbackUrl = linkGenerator.GetUriByPage(httpContextAccessor.HttpContext,
    "/Account/Login", null, new {area = "Identity", userId = user.Id});