我正在使用 Url.Action 生成一个绝对 URL 以在电子邮件中发送。该链接在 Controller 内生成。
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 协议(protocol):
http:///account/confirm-email?userId=10&code=CfDJ8JH5BJKUsPZDnCLwFc3HSEHfe9Fk00NHiJqk36VbvkDbbV39AI7HY5m9pXVItwYE9%2B9ElTcnBSZiDNQ%2FmO5lx1tSnuvDmhzdzGlCQCfPQVe%2B21Nw03uNuBWoO8HCVivqzfudti579bWiaLW6PuuQQimn449YymVjgV3R36HeQID26jTmAxizDTqOsF1%2FvQc5Zw%3D%3D
我正在使用 ASP .NET Core 和 "Microsoft.AspNetCore.Mvc": "1.1.0"
。
应用程序发布到 IIS。
最佳答案
我以前也遇到过同样的问题,下面的代码对我来说工作正常。
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")}";
关于c# - 带有协议(protocol)的 Url.Action 返回没有域的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41155149/