我正在尝试构建一个解决方案,它将模拟App_Offline.htm进行远程访问,但仍允许本地用户测试该网站。我发现了一些我正在尝试的各种选项,但最好的一个似乎不适用于我们的ASP.NET(2.0)站点,它依赖于在所有页面上启用会话状态。HttpHandler和会话状态问题
的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或$ 自定义会话状态模块包含在 <配置> \ <的System.Web > \ <的HttpModules>应用程序 配置 节“。
我们所有的会话变量都存储在SQL中,不确定是否存在这个因素。
我见过其他人有类似的错误,他们给出的答案是你需要添加ProcessRequest(上下文)来解决它。
想法,意见,建议?
谢谢。
是的 - 这应该解决它。 – 2010-09-03 16:43:35
*打头* 公共类AppOfflineHandler:IHttpHandler,IRequiresSessionState 现在工作就像一个魅力,谢谢! – 2010-09-03 20:07:47
不错的一个,工作就像一个魅力:-) – 2012-10-22 15:56:26