Asp.net mvc Net MVC Nhibernate会话
在转向MVC和现在的IIS7时,我们开始遇到问题,因为每次请求(静态文件等)都会调用打开和关闭ISession的HTTP模块。我想避免完全重写NH会话管理,所以我在模块中实现了这段代码,以过滤掉除向mvchandler发送的请求以外的所有内容:Asp.net mvc Net MVC Nhibernate会话,asp.net-mvc,nhibernate,Asp.net Mvc,Nhibernate,在转向MVC和现在的IIS7时,我们开始遇到问题,因为每次请求(静态文件等)都会调用打开和关闭ISession的HTTP模块。我想避免完全重写NH会话管理,所以我在模块中实现了这段代码,以过滤掉除向mvchandler发送的请求以外的所有内容: void context_PreRequestHandlerExecute(object sender, System.EventArgs e) { HttpContext context = ((HttpApplication)sender).
void context_PreRequestHandlerExecute(object sender, System.EventArgs e)
{
HttpContext context = ((HttpApplication)sender).Context;
Type mvcht = typeof(System.Web.Mvc.MvcHandler);
if (context.Handler != null && context.Handler.GetType().IsAssignableFrom(mvcht))
{
// Code Here
}
}
我的问题是,我从未在请求管道中使用过此事件。那么,这样做有没有隐藏的陷阱?另外,我是否在为每个请求运行此检查时考虑性能问题?我还没有注意到任何东西,但这是一个新的、仍然很小的应用程序。虽然这并没有特别解决您的问题,但应该注意的是,打开会话的成本是很高的。因此,您可能首先考虑不执行此检查。 true,但是什么使我处于优势的地方是,当EntIdRevices事件会触发一些非MVC请求时,在当前会话中,我会随机地获得一个空REF异常。我想看一下:-您可能完全可以通过配置模块来处理这个问题。