所以我知道如何设置我的控制器,以便我可以接受注入到控制器中的 LinkGenerator。我不明白的是如何在启动时使用 LinkGenerator 注入控制器。
控制器
protected readonly LinkGenerator _linkGenerator;
public SomeController(config config, LinkGenerator linkGenerator)
{
config = Config;
_linkGenerator = linkGenerator;
}
启动 - 配置服务
Controllers.SomeController someController = new
Controllers.SomeController(config, linkGenerator); //how do I get an
instance of link generator here.
services.AddSingleton(someController);
我在启动的Configure方法中尝试了这个,但是ConfigureServices在Configure之前运行
app.Use(async (context, next) =>
{
linkGenerator = context.RequestServices.GetService<LinkGenerator>();
});
我缺少什么?
我找到了这篇文章:https://kontext.tech/article/974/generate-absolute-path-using-linkgenerator-in-aspnet-core https://kontext.tech/article/974/generate-absolute-path-using-linkgenerator-in-aspnet-core。
它指出:
要在代码中使用此类,我们需要注入它。链接生成器是
DI 提供的单例服务。它是自动注册的
你打电话时services.AddRouting();
。所有方法还需要
每个请求访问HttpContext实例,可以通过以下方式访问
注入 HttpContextAccessor。
services.AddHttpContextAccessor();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)