我正在尝试设计一个解决方案,它将模拟App_Offline.htm进行远程访问,但仍允许本地用户测试网站。我找到了一些我正在尝试的各种选项,但最好的选项似乎不适用于我们的ASP.NET(2.0)站点,它依赖于在所有页面上启用会话状态。
将HttpHandler添加到web.config
中<add verb="*" path="*.aspx" type="AppOffline.AppOfflineHandler, AppOffline" />
当班级被调用时,归结为:
public void ProcessRequest( HttpContext context )
{
this.context = context;
// offline mode and remote request?
if ( !context.Request.IsLocal &&
IsOffline
)
{
context.Response.Clear();
context.Response.Write( AppOffline );
context.Response.End();
}
else
// redirect to the default processing pipe
PageParser.GetCompiledPageInstance(
context.Request.Path,
context.Request.PhysicalPath,
context ).ProcessRequest( context );
}
问题出在PageParser.GetCompiledPageInstance中。我现在在我们网站上点击的任何页面都会收到以下错误消息:
“会话状态只能在以下情况下使用 enableSessionState设置为true, 在配置文件中或在 Page指令。请也做 确定 System.Web.SessionStateModule或 自定义会话状态模块是 包括在内 &LT;结构&gt; \&LT;的System.Web&GT; \&LT;的HttpModules&GT; 申请中的部分 配置。“
我们将所有会话变量存储在SQL中,不确定是否存在这些因素。
我见过其他有类似错误的人,他们得到的答案是你需要添加ProcessRequest(上下文)来解决它。
想法,意见,建议?
感谢。
答案 0 :(得分:9)
您是否在处理程序中实现了IRequiresSessionState
?