Jam*_*xon 9 c# dependency-injection unity-container asp.net-web-api
我使用Unity作为我的IoC框架,我正在基于处理程序中每个请求的标头中的值创建一个类型:
var container = new UnityContainer();
container.RegisterType<IFoo,Foo>(new InjectionConstructor(valuefromHeader));
GlobalConfiguration.Configuration.DependencyResolver =
new Unity.WebApi.UnityDependencyResolver(container);
Run Code Online (Sandbox Code Playgroud)
问题是处理程序SendAsync意味着全局容器被不同的请求覆盖,并且在构造函数中使用IFoo的控制器得到错误的值.
1)我可以使SendAsync同步吗?2)如果没有,如何为每个请求创建不同的实例并让IoC容器安全解析?
我查看了以下文章但没有成功:
http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver http://www.strathweb.com/2012/11/asp-net-web-api -and-dependencies-in-request-scope/ http://benfoster.io/blog/per-request-dependencies-in-aspnet-web-api-using-structuremap
提前致谢.
Tyl*_*sen 12
我同意@ Steven的方法,但这并不能回答你如何解决每个请求的更一般的问题.
我建议您更改为使用UnityHierarchicalDependencyResolver,然后根据请求解析您向HierarchicalLifetimeManager注册的任何内容.
改变这个......
GlobalConfiguration.Configuration.DependencyResolver =
new Unity.WebApi.UnityDependencyResolver(container);
Run Code Online (Sandbox Code Playgroud)
对...
GlobalConfiguration.Configuration.DependencyResolver =
new Unity.WebApi.UnityHierarchicalDependencyResolver(container);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11111 次 |
| 最近记录: |