【问题标题】:How does error page shown in default internet application ASP.NET MVC默认 Internet 应用程序 ASP.NET MVC 中如何显示错误页面
【发布时间】:2013-06-23 11:49:52
【问题描述】:

我正在使用 ASP.NET MVC 3 中的默认 Internet 应用程序。当应用程序中发生错误时,它会自动重定向到默认错误页面,该页面已在视图内的共享文件夹中可用。

我想弄清楚它是如何发生的?因为我在 web.config 或 Global.asax 中没有看到任何设置,这些设置会在发生错误时强制应用程序重定向到错误页面。

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 error-handling


    【解决方案1】:

    它将在web.config,它看起来像:

    <system.web>
    <customErrors mode="Off" />
    </system.web>
    

    MVC 有一个默认的异常过滤器 (HandleError),它为您提供内置的错误处理。

    【讨论】:

    • 我在 web.config 中找不到它。我想知道这是不是默认设置?如果这是他们实际强制重定向的方式。
    • 重定向是由注册在Global.asax文件中的HandleError过滤器强制进行的,如果你想改变这种行为,你可以引入你自己的继承自HandleError的属性并注册它在默认值之前。
    • 据我所知(通过查看源代码),不涉及重定向。
    • @haim770 通过重定向我相信 OP 表示 view,而不是实际的 URL 重定向(单词选择错误)。
    【解决方案2】:

    这通常是由你的global.asax默认注册的全局Action Filter引起的:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }
    

    但请记住,默认情况下,如果 &lt;customErrors mode="Off" /&gt; 在您的 Web.config 中,过滤器不会自行调用。

    请注意HandleError 过滤器使用重定向,它只是将请求的Action 的原始ActionResult 替换为它自己的使用Error.cshtml 视图的ViewResult (除非另有说明)。

    http://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/HandleErrorAttribute.cs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 2019-03-16
      • 2012-08-21
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多