我想通过依赖项注入(inject)使用 IUrlHelper,以便能够使用其功能为不同的 rest 端点生成 uris。我似乎无法弄清楚如何从头开始创建 UrlHelper,因为它在 MVC 6 中发生了变化,并且 MVC 不会自动在 IoC Controller 中提供该服务。
设置是我的 Controller 采用内部模型到 api 模型转换器类,并使用 IUrlHelper(全部通过依赖注入(inject))。
如果 IUrlHelper/UrlHelper 有更好的替代方案,我可以用来为我的 WebApi 操作/ Controller 生成 Uris,我愿意接受建议。
最佳答案
UrlHelper 需要当前的操作上下文,我们可以从 ActionContextAccessor 获取它。我正在使用这个:
services.AddScoped<IActionContextAccessor, ActionContextAccessor>();
services.AddScoped<IUrlHelper>(x =>
{
var actionContext = x.GetService<IActionContextAccessor>().ActionContext;
return new UrlHelper(actionContext);
});
现在,您可以将 IUrlHelper 直接注入(inject)到任何需要它的地方,而无需跳过 IHttpContextAccessor。
关于c# - MVC 6 IUrlHelper 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31059497/