【发布时间】:2019-07-10 19:11:18
【问题描述】:
我需要能够控制由我的Url.Content("~") 调用生成的链接,以便能够在链接的开头接受一个 Slug。基本上,托管 URL 将位于负载均衡器之后,并且可能位于根级别或位于更友好的 URL 之后...
例如:
站点配置为在http://localhost:5001下运行,所以Url.Content("~/scripts/site.js")会生成"/scripts/site.js"
如果浏览器直接访问该 url 或什至是 www.mysite.com 之类的别名,这很好。
但我希望能够灵活地在 www.mysite.com/Slug 下托管网站(想想证书等)......
现在我生成的链接转到 www.mysite.com/scripts.site.js 解析为 404。
理想情况下,可以在自定义 IUrlHelper 甚至自定义 LinkGenerator 中配置 slug,但我似乎无法注入这些并覆盖当前的。
我试过了:
services.AddScoped<IUrlHelper>(x =>
{
var actionContext = x.GetService<IActionContextAccessor>().ActionContext;
return new MyCustomUrlHelper(actionContext);
});
但无法注入。当我尝试调试时,我注意到如果你在控制器中调用相同的命令,你会得到一个 Microsoft.AspNetCore.Mvc.Routing.EndpointRoutingUrlHelper 的实例。
有没有办法在不创建自定义帮助器的情况下改变它(因为在某些区域会遗漏它并且会使调试几乎不可能找到被滥用的帮助器)
【问题讨论】:
标签: c# asp.net-core-mvc slug urlhelper