Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVC每请求会话模式和IHttpModule_Asp.net_Asp.net Mvc_Nhibernate_Iis - Fatal编程技术网

ASP.NET MVC每请求会话模式和IHttpModule

ASP.NET MVC每请求会话模式和IHttpModule,asp.net,asp.net-mvc,nhibernate,iis,Asp.net,Asp.net Mvc,Nhibernate,Iis,我正试图找到一个解决方案,就像 如何筛选请求?如果请求是ASP.NET MVC操作,而不是*.gif、*.css等,我只想打开ISession 如何处理此筛选?您可以将managedHandler先决条件添加到模块中。但是我不知道它是否适合ASP.NETMVC,因为静态文件通过路由传递 无论如何,您可以尝试以下方法: <add name="RequestTimer" type="MySite.HttpModule.RequestTimeModule, MySite" preconditio

我正试图找到一个解决方案,就像

如何筛选请求?如果请求是ASP.NET MVC操作,而不是*.gif、*.css等,我只想打开ISession


如何处理此筛选?

您可以将managedHandler先决条件添加到模块中。但是我不知道它是否适合ASP.NETMVC,因为静态文件通过路由传递

无论如何,您可以尝试以下方法:

<add name="RequestTimer" type="MySite.HttpModule.RequestTimeModule, MySite" precondition="managedHandler" />

HTHs,

Charles

会话的创建成本非常低,我不想使用这个过滤器

从字面上说,打开一个会话只是一个简单的问题。SessionImpl,如果会话中没有发生任何事情,则不要做太多。

您可以使用以下方法:

void IHttpModule.Init(HttpApplication context)
{
    context.PreRequestHandlerExecute += new System.EventHandler(context_PreRequestHandlerExecute);
}
然后,您可以检查是否是MVC处理程序(键入
MvcHandler
)将执行您的请求:

 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 goes here.
     }
 }

也许我应该制作一个ActionFilter并将其添加到每个控制器中。但是我喜欢httpmodule的想法,你有没有试着加入前置条件?到底是干什么用的?你能用另一种方法解决吗?不,我没有试过先决条件。我会提出另一个解决方案。正如Mauricio在下面所描述的,ISession的创建成本很低,如果您没有点击db,那么根本就不会建立连接。我仍然不喜欢创建我不会使用的对象。我将以另一种方式创建UnitOfWork,可能会使用一些actionfilter