【问题标题】:ASP.NET MVC - Handling 404's: The SessionStateTempDataProvider requires SessionState to be enabledASP.NET MVC - 处理 404:SessionStateTempDataProvider 需要启用 SessionState
【发布时间】:2010-12-09 20:27:09
【问题描述】:

我已按照此处所述设置错误处理:How can I properly handle 404 in ASP.NET MVC?

当调用 errorController.Execute 方法时,我得到一个 InvalidOperationException: The SessionStateTempDataProvider requires SessionState to be enabled。

我的会话状态模式设置为 InProc,但我没有使用它,所以我也尝试按照此处所述将其关闭:How can I disable session state in ASP.NET MVC? 代码已执行,但我仍然收到错误。

这是使用 Visual Studio 内置 Web 浏览器在本地发生的。

有没有办法解决这个问题?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    如果您想保持会话状态打开,请尝试将以下内容添加到 <system.webServer> <modules>

    <add name="SessionStateModule" type="System.Web.SessionState.SessionStateModule" />
    

    【讨论】:

    • 这对我来说并没有消除错误,我也在使用 Visual Studio 内置的 Cassini 服务器。
    • 这个错误只有在使用内置web-dev和IE时才会出现,在使用内置web-dev和FF时不会出现,在使用IE和IIS 7时不会出现,奇怪。
    【解决方案2】:

    可以通过覆盖 ErrorController 中的 ExecuteCore 方法来解决此问题。显然,某些类型的错误(例如,禁止文件访问)没有完全填充错误处理程序可用的 HttpContext;特别是 Context.Session == null,这会导致 ExecuteCore 方法在尝试确定是否有任何 TempData 需要保存/加载时阻塞。

    我决定我可以在我的错误控制器中没有 TempData;这是我的实现。

    public class ErrorController : Controller {
      protected override void ExecuteCore() {
        string actionName = RouteData.GetRequiredString("action");
        if (!ActionInvoker.InvokeAction(ControllerContext, actionName)) {
          HandleUnknownAction(actionName);
        }
      }
    
      [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
      public ViewResult InternalServerError() {
        Response.StatusCode = (int)HttpStatusCode.InternalServerError; // 500
        return View();
      }
    
      [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
      public ViewResult NotFound(string Path) {
        Response.StatusCode = (int)HttpStatusCode.NotFound; // 404
        ViewData["Path"] = Path;
        return View();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 2010-10-17
      • 2021-02-20
      • 2010-10-11
      相关资源
      最近更新 更多