带协议的Url.Action返回没有域的链接

Gab*_*ert 8 c# sendgrid asp.net-core-mvc asp.net-core

我正在使用Url.Action生成一个绝对URL以通过电子邮件发送.链接在控制器内生成.

ConfirmLink = Url.Action(
    "ConfirmEmail",
    "Account",
    new { userId = user.Id, code },
    HttpContext.Request.Scheme
)
Run Code Online (Sandbox Code Playgroud)

出于某种原因,在本地,我有这样的结果:

http://localhost:5102/account/confirm-email?userId=10&code=CfDJ8JH5BJKUsPZDnCLwFc3HSEHfe9Fk00NHiJqk36VbvkDbbV39AI7HY5m9pXVItwYE9%2B9ElTcnBSZiDNQ%2FmO5lx1tSnuvDmhzdzGlCQCfPQVe%2B21Nw03uNuBWoO8HCVivqzfudti579bWiaLW6PuuQQimn449YymVjgV3R36HeQID26jTmAxizDTqOsF1%2FvQc5Zw%3D%3D
Run Code Online (Sandbox Code Playgroud)

但我在staging/prod中没有域/ https协议的结果:

http:///account/confirm-email?userId=10&code=CfDJ8JH5BJKUsPZDnCLwFc3HSEHfe9Fk00NHiJqk36VbvkDbbV39AI7HY5m9pXVItwYE9%2B9ElTcnBSZiDNQ%2FmO5lx1tSnuvDmhzdzGlCQCfPQVe%2B21Nw03uNuBWoO8HCVivqzfudti579bWiaLW6PuuQQimn449YymVjgV3R36HeQID26jTmAxizDTqOsF1%2FvQc5Zw%3D%3D
Run Code Online (Sandbox Code Playgroud)

我正在使用ASP .NET Core "Microsoft.AspNetCore.Mvc": "1.1.0".

应用程序发布到IIS.

Ros*_*oss 0

尝试添加 Host 参数:

ConfirmLink = Url.Action(
    "ConfirmEmail",
    "Account",
    new { userId = user.Id, code },
    HttpContext.Request.Scheme,
    HttpContext.Request.Host.Host
)
Run Code Online (Sandbox Code Playgroud)