我想通过依赖项注入(inject)使用IUrlHelper,以便能够使用其功能为不同的其余端点生成uri。我似乎无法弄清楚如何从头开始创建UrlHelper,因为它在MVC 6中已更改,并且MVC不会在IoC Controller 中自动提供该服务。

设置是我的 Controller 将内部模型转换为api模型转换器类,并且使用IUrlHelper(全部通过依赖注入(inject))。

如果可以使用IUrlHelper/UrlHelper更好的替代方法,我可以为我的WebApi操作/ Controller 生成Uris,我可以提出建议。

最佳答案

UrlHelper需要当前的 Action 上下文,我们可以从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/

10-13 03:18