【问题标题】:error handling in asp.net MVC3asp.net MVC3 中的错误处理
【发布时间】:2011-07-18 00:25:30
【问题描述】:

我创建了一个 MVC3 应用程序并在 web.config 中添加了 cutomerrors 属性 on。它适用于 chrome 和 Firefox,但是当我在 IE9 中运行它时,我得到了

网站无法显示页面

HTTP 500

最可能的原因: •网站正在维护中。 •该网站有一个编程错误。

你可以尝试什么:

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=152368
  -->

<configuration>
  <appSettings>
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
  </appSettings>

  <system.web>
      <customErrors mode="On"></customErrors>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
    </compilation>

    <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" />
    </authentication>

    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages"/>
      </namespaces>
    </pages>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    在 Internet Explorer 版本中存在一个已知问题,即自定义错误页面必须至少为 512 字节。虽然这通常适用于旧 IE 版本并且通常会导致 404 错误页面,但我建议确保您的自定义错误页面大小为 1 kB。您可能会放入一些 HTML cmets 或其他东西。只是为了确保它与那个旧的 IE 错误无关。

    只是众多参考中的一个: http://perishablepress.com/press/2008/01/21/important-note-for-your-custom-error-pages/

    【讨论】:

    • 感谢它的工作。然而,一个问题是,当我使用 VS 开发服务器时。所以当我运行我的 MVC 应用程序时,它会命中控制器中发生异常的地方,然后按 Enter 键以显示错误页面。不能直接进入错误页面吗?
    • “它击中了这个地方”是什么意思?你的意思是VS在调试器中持有?如果是这样,您可以使用 Visual Studio 主菜单“调试”»“异常...”,在那里您可以设置要处理的异常,这可能会有所帮助。如需更多控制,您可以查看此处:stackoverflow.com/questions/183316/asp-net-mvc-handleerror/…(但这是另一回事)
    • 谢谢!经过无数小时的尝试后...一定要爱上 IE。 +1
    【解决方案2】:

    这是内置的 IE 错误页面。您可以发布您的 web.config 以便我们查看您的内容吗?

    <customErrors mode="On" defaultRedirect="/Home/Error">
      <error statusCode="403" redirect="/Home/NoAccess" />
      <error statusCode="404" redirect="/Home/NotFound" />
      <error statusCode="500" redirect="/Home/Internal" />
    </customErrors>
    

    这是我希望在网络配置中看到的。我不确定其他浏览器中显示的是什么页面。

    我猜 IE9 期望返回一些内容,尝试将内部操作和视图添加到您的主控制器并指定 defaultRedirect="/Home/Internal" 看看是否有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2012-03-05
      • 1970-01-01
      • 2010-10-09
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多