IIS HttpModule无法设置Session

时间:2009-01-09 12:53:33

标签: c# asp.net iis

我正在尝试使用IHttpModule设置Session值。我已将HttpModule设置为用于所有请求,而不仅仅是托管/ ASPX页面。

但是我发现,当一个非ASP.NET页面的请求进入时(例如gif),HttpApplication的Session成员会抛出异常或者为null。

我发现以下SO帖子的原因是:link

当我使用实现IRequiresSessionState的HttpHandler交换HttpHandler时,会话成员在HttpModule中可用,并且Set-Cookie被发送回浏览器,但稍后当我尝试读取会话中的内容时正常的ASPX页面没有我设置的值。调试时,我可以看到HttpModule和普通ASPX页面中的SessionID是相同的。

我是否需要做任何事情来强制保存会话?我假设在假冒HttpHandler中交换初始化Session时,必须将原来没有实现IRequiresSessionState的原因放回来导致会话在请求结束时不被保存。

1 个答案:

答案 0 :(得分:2)

我刚刚解决了这个问题,我不得不将原始HttpHandler的重新映射从PostAcquireRequestState移到PreRequestHandlerExecute。