我在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});
答案 0 :(得分:1)
通过设计linkGenerator.GetPathByPage
将返回相对路径。如果您需要包含Uri
和Scheme
的完整Host
,则必须使用另一种方法GetUriByPage
LinkGenerator
也提供了以下内容:
var callbackUrl = linkGenerator.GetUriByPage(httpContextAccessor.HttpContext,
"/Account/Login", null, new {area = "Identity", userId = user.Id});