在WebForms中使用system.web.routing时的状态服务

时间:2020-03-06 15:00:49  来源:igfitidea点击:

我在WebForms应用程序中使用System.Web.Routing程序集。运行在win2008 / IIS7上部署的应用程序时,出现以下消息。

Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the \ section in the application configuration.

仅在使用我配置的路由时这才是问题。直接导航到aspx页面时,这不是问题。

在web.config和Page指令中都已启用EnableSessionState。我已经将Session条目添加到web.config的httpmodule中。

在我的工作站上使用Visual Studio开发时,这不是问题。尝试在Win 2008上的IIS7下运行应用程序时,这只是一个问题。

解决方案

我遇到了同样的问题,我想我知道问题出在哪里。

我正在尝试在路由系统下实现FileNotFound页面(我尚未弄清楚的是如何既给FileNotFound页面又在标头中给出404响应)

我发现,由于某种原因,在BuildManager中注册的页面似乎是在没有会话上下文的情况下被实例化的(该页面实际上未被请求,只是被实例化了!)。

至少这就是它的作用。

我现在不太确定以前的主张了。显然,当图像请求在物理上不存在时,它们也会通过路由系统。当图像路径匹配时,这将导致调用" IRouteHandler"。我很确定在请求图像时会话对象不存在,因此当路由到该页面的页面尝试访问它时,可能会导致问题。

我认为我们所描述的内容与我所提出的问题类似。

可能是IIS7在另一种模式下运行,而不是II6而不是7:

几个问题:
1.映射是否正确地重定向了请求?
2.将请求映射到何处?
3.如果我们在此页面中进行跟踪,那么哪一行代码会生成错误(它甚至会击中代码)?