【问题标题】:Url.Action with protocol is returning a link without domain带有协议的 Url.Action 正在返回没有域的链接
【发布时间】:2016-12-15 01:52:26
【问题描述】:

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

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

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

http://localhost:5102/account/confirm-email?userId=10&code=CfDJ8JH5BJKUsPZDnCLwFc3HSEHfe9Fk00NHiJqk36VbvkDbbV39AI7HY5m9pXVItwYE9%2B9ElTcnBSZiDNQ%2FmO5lx1tSnuvDmhzdzGlCQCfPQVe%2B21Nw03uNuBWoO8HCVivqzfudti579bWiaLW6PuuQQimn449YymVjgV3R36HeQID26jTmAxizDTqOsF1%2FvQc5Zw%3D%3D

但是我在 staging/prod 中得到了这个结果,没有域/https 协议:

http:///account/confirm-email?userId=10&code=CfDJ8JH5BJKUsPZDnCLwFc3HSEHfe9Fk00NHiJqk36VbvkDbbV39AI7HY5m9pXVItwYE9%2B9ElTcnBSZiDNQ%2FmO5lx1tSnuvDmhzdzGlCQCfPQVe%2B21Nw03uNuBWoO8HCVivqzfudti579bWiaLW6PuuQQimn449YymVjgV3R36HeQID26jTmAxizDTqOsF1%2FvQc5Zw%3D%3D

我正在使用带有"Microsoft.AspNetCore.Mvc": "1.1.0" 的 ASP .NET Core。

应用程序发布到 IIS。

【问题讨论】:

  • 你试过不指定协议吗?
  • @ColinM 还是同样的问题:http:///account/confirm-email?userId=8&code=...
  • Url.Action 是否在其他任何地方(在视图或代码中)返回完整的 URL?
  • @ColinM 它适用于视图,而不是控制器。我还尝试了非开发环境,并且正确发送了 Url。 :\

标签: c# asp.net-core asp.net-core-mvc sendgrid


【解决方案1】:

我以前也遇到过同样的问题,下面的代码对我来说很好。

var ConfirmLink = Url.Action(
    "ConfirmEmail",
    "Account",
    new { userId = user.Id, code },
    HttpContext.Request.Scheme,
    HttpContext.Request.Host.Value //HttpContext.Request.Host.ToString()
)

或手动

var ConfirmLink = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}{Url.Action("ConfirmEmail", "Account")}";

【讨论】:

  • 只是想指出,上面的答案由于某种原因不起作用,必须修改才能使其起作用:Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code }, HttpContext.Request.Url.Scheme)
【解决方案2】:

尝试添加主机参数:

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

【讨论】:

  • 能否添加调试代码,看看生产环境下HttpContext.Request.Host.Host的值是多少?
猜你喜欢
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多