我正在尝试使用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的原因放回来导致会话在请求结束时不被保存。
答案 0 :(得分:2)
我刚刚解决了这个问题,我不得不将原始HttpHandler的重新映射从PostAcquireRequestState移到PreRequestHandlerExecute。