【问题标题】:How to redirect all errors, including 404如何重定向所有错误,包括 404
【发布时间】:2012-06-04 22:26:40
【问题描述】:

我希望所有错误都转到同一个错误页面。我最初确实尝试了带有状态码的错误标签。这很好用,但我宁愿不必指定任何状态代码,并且仍然让每个错误都转到一页。问题是如果我删除状态码条目,404 会转到服务器的 404 页面,而不是我的错误页面。

有没有办法将所有错误配置到同一页面?

【问题讨论】:

    标签: c# asp.net asp.net-mvc c#-4.0


    【解决方案1】:

    您应该更改您的 web.config 并添加 customErrors 元素。然后你可以设置默认重定向到一个signle页面

    举例

    <customErrors mode="On" defaultRedirect="Error.aspx">
    
    </customErrors>
    

    可以参考MSDN文章 http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx

    在 IIS7 上,您可以使用新的 httpErrors 部分

    <system.webServer>
        <httpErrors defaultPath="Error.aspx" defaultResponseMode="Redirect">
        </httpErrors>
    </system.webServer>
    

    更多信息 http://www.iis.net/ConfigReference/system.webServer/httpErrors

    【讨论】:

    【解决方案2】:

    如果我理解得很好,您需要将所有错误发送到您的自定义错误页面,以及 iis7 给出的错误(不仅仅是您的程序)

    这是你需要在 II7 上设置的东西,但你也可以从 web.config 设置它(但实际上是给 ii7 说明)这里是一个例子

    <configuration>
       <system.webServer>
          <httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="File" >
             <remove statusCode="500" />
             <error statusCode="500"
                prefixLanguageFilePath="C:\Contoso\Content\errors"
                path="500.htm" />
           </httpErrors>
       </system.webServer>
    </configuration>
    

    参考:http://www.iis.net/ConfigReference/system.webServer/httpErrors

    【讨论】:

    • 您仍在指定状态码。但是是的 - 我确实尝试过,但使用的是 ExecuteURL 而不是静态文件。在 404 上,给出一个白页,上面写着“您要查找的资源已被删除、名称已更改或暂时不可用”。
    • 当我将 500 更改为 404 并使用相关的 ExecuteURL 代码时,这对我有用。
    猜你喜欢
    • 2013-12-04
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    相关资源
    最近更新 更多