asp.net – 何时使用Request.RegisterForDispose?
对于ASP.NET Web API,我一直在研究自己的IHttpControllerActivator实现,我想知道何时(或为什么?)使用HttpRequestMessage扩展方法“RegisterForDispose”.
我看到这样的例子,我可以看到它的相关性,因为IHttpController不继承IDisposable,而IHttpController的实现并不保证它自己的dispose逻辑. public IHttpController Create(HttpRequestMessage request,HttpControllerDescriptor controllerDescriptor,Type controllerType) { var controller = (IHttpController) _kernel.Get(controllerType); request.RegisterForDispose( new Release(()=> _kernel.Release(controller))); return controller; } 但后来我看到这样的事情并开始怀疑: public IHttpController Create( HttpRequestMessage request,Type controllerType) { if (controllerType == typeof(RootController)) { var disposableQuery = new DisposableStatusQuery(); request.RegisterForDispose(disposableQuery); return new RootController(disposableQuery); } return null; } 在这个例子中,RootController在这里没有注册处理,大概是因为它是一个ApiController或MVC控制器? – 因此会自行处理. DisposableStatusQuery的实例已注册处置,因为它是一个一次性对象,但为什么控制器不能处理实例本身? RootController具有disposableQuery(或者更确切地说,它的接口或抽象基础)的知识,因此会知道它是一次性的. 我什么时候才能真正需要使用HttpRequestMessage.RegisterForDispose? 解决方法
我发现一个场景对于自定义ActionFilter非常有用.
因为属性被缓存/重用,所以属性中的项不应该依赖于控制器被处理(据我所知 – 并且可能有警告)…所以为了创建一个不是自定义属性绑定到特定的控制器类型/实现,您可以使用此技术来清理您的东西.在我的例子中,它是一个环境DbContextScope属性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 产品目录搜索 – NoSQL / MongoDB的良好用例
- entity-framework-6 – 带有EF6的ASP.NET-5
- asp.net – 是否有可能在代码隐藏中获取不可见的GridViewRo
- asp.net MVC NPOI导出excel通用
- asp.net-mvc-4 – ASP.NET MVC 4会员“记住我”如何运作?
- asp.net – 在Visual Studio 2008中将后期构建事件添加到网
- asp.net-mvc – MVC 3中ModelBinder构造函数注入的示例IMod
- asp.net – Global.asax中的事件未触发
- asp.net-mvc-3 – 返回404错误ASP.NET MVC 3
- asp.net-mvc-3 – 如何在MVC3上使用authorize属性
- asp.net – 如何使用AspNetSqlMembershipProvide
- asp.net-mvc-3 – 如何修改MVC3视图页面中的body
- 如何创建ASP.NET RecaptchaControl自定义模板
- asp.net – RAZOR MVC3:重用的部分视图
- asp.net – 如何将现有Azure Web角色转换为新式A
- asp.net-mvc – 为什么HttpContext不是从HttpCon
- asp.net – Windows Azure启动任务未触发
- asp.net – RazorGenerator没有生成正确的命名空
- asp.net-core-mvc – 在第二级包含几个引用
- asp.net – HttpContext.Request.Cookies和HttpC