gpt4 book ai didi

asp.net-web-api - ASP .Net 4 Web Api RC + Autofac 手动解析

转载 作者:行者123 更新时间:2023-12-01 11:51:26 25 4
gpt4 key购买 nike

我正在尝试在 Web Api 方法中使用 depedency 解析器。这工作正常,并且与带有 DepedencyResolver.GetService() 的经典 ASP.NET MVC 一起工作良好

但我无法在 WepApi 方法中使用它。

我的注册将所有实例注册为 InstancePerApiRequest,如果我在我的 WebAPIConroller 的构造函数中添加我在我的 Bootstrap 中注册的所有类型中的任何一个,那么在内部调用它们时可以正常注入(inject)但不再注入(inject)。

像我说的Get方法

var userRepository = (IUserRepositoryu)GlobalConfiguration
.Configuration.DependencyResolver.GetService(typeof(IUserRepository));

我收到无范围 WebRequest 错误。奇怪的是,在他们将其全部更改为 GlobalConfiguration 之前,它在 Beta 中运行良好。

所以我的问题是,如何像以前一样在我的 webAPI 的生命周期范围内激活我的 Autofac 注册程序集

我的错误:

“从请求实例的范围内看不到带有与‘AutofacWebRequest’匹配的标签的范围。这通常表示注册为每个 HTTP 请求的组件正在被 SingleInstance() 组件(或类似的场景。)在 Web 集成下,始终从 DependencyResolver.Current 或 ILifetimeScopeProvider.RequestLifetime 请求依赖项,而不是从容器本身请求依赖项。”

 var resolver = new AutofacWebApiDependencyResolver(container);
configuration.DependencyResolver = resolver;

最佳答案

在 Web API 中,全局依赖解析器用于访问全局实例。每个请求的服务来自 Web API 为处理请求而创建的依赖范围。我不确定 Web API 中是否有任何方法可以访问当前的依赖范围 - 知道它会很有趣。

这里最好的选择是只使用依赖注入(inject)而不是像这样直接调用解析器。您的代码的哪一部分需要进行此调用?

关于asp.net-web-api - ASP .Net 4 Web Api RC + Autofac 手动解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11123732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com