【问题标题】:Where and how to define <customErrors mode=”on”> for my asp.net MVC 3 web application在哪里以及如何为我的 asp.net MVC 3 Web 应用程序定义 <customErrors mode=”on”>
【发布时间】:2012-03-06 08:46:24
【问题描述】:

我想将客户错误设置为 true,以防止用户查看有关我的应用程序的详细信息。但我找不到我应该在哪里写这个&lt;customErrors mode="on"&gt;;它应该在 web.config 中还是在 web、debug.config 中还是在哪里?

BR

【问题讨论】:

    标签: asp.net-mvc-3 web-config custom-errors


    【解决方案1】:

    根据我的经验,我们应该在发布模式下将自定义错误设为开启,并在调试时将其关闭。要自动执行此操作,我们可以使用 web.config 转换,如下例所示。

    Web.Debug.config

    此设置将允许 Web 服务器显示包含有用错误信息的 ASP.NET 黄页。

    <customErrors mode="Off" xdt:Transform="Replace" />
    

    Web.Release.config

    另一方面,我们不希望用户知道技术错误。我们应该使用自定义错误页面而不是 ASP.NET 黄页。

    <customErrors mode="On" xdt:Transform="Replace" />
    

    【讨论】:

    • 为什么不RemoteOnly?这样您就不必使用 XML 转换,开发人员可以在网络服务器上查看网站时看到错误。
    • 有时从网络服务器查看网站不方便? (并不是说你的观点没有价值..)
    • 或许应该指出,&lt;customErrors 节点需要以某种形式存在于 web 配置中,才能成为 xdt:Transform="Replace"d - 如果 web 中没有 &lt;customErrors 节点.config,然后将这些行添加到 web.Release.config 将不会导致添加节点。如果 web.config 根本没有 &lt;customErrors 节点并且您希望转换添加它,请使用 xdt:Transform="Insert"
    【解决方案2】:

    放入 Web.config 并为重定向创建一个错误页面。 在 MVC 中,您有 HandleErrorAttribute,在类上标记它以处理意外错误,记录它并抛出错误页面。自定义错误是具有已知状态代码的特定错误的默认页面。

    <system.web>
        <customErrors mode="On">
          <error statusCode="404" redirect="/PageNotFound?" />
        </customErrors>
    </system.web>
    

    【讨论】:

      【解决方案3】:

      这将取决于,但通常应该在 Web.config 文件中。

      Web.Debug.config 和 Web.Release.config(以及其他配置变体)用于部署应用程序。当您执行发布操作时,转换会在部署期间应用到您的 Web.config 文件,这意味着您可以将特定的配置设置应用于您已设置的调试、发布和其他配置。

      如果您在开发过程中通常不执行发布操作,则需要将此设置应用于 Web.config 文件以使其生效。

      有关转换 Web.config 文件的更多详细信息,请参阅http://msdn.microsoft.com/en-us/library/dd465318.aspx

      有关将 customErrors 元素添加到 Web.config 文件的示例,请参阅 http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx

      【讨论】:

      • Scott Hanselman 在第 9 频道上有一个关于部署以及如何有效使用 web.config 的调试和发布版本的精彩视频。 channel9.msdn.com/Events/MIX/MIX10/FT14
      • 我在 web.config 中定义 在关闭 标签之前如下:- 但如果发生错误,则会显示完整的错误消息(不是自定义错误)...!!!
      • 元素放在 标记下。您还需要将 defaultRedirect 指定给控制器操作,或者最好是静态 html 文件。或者,许多人将自定义错误关闭,然后在应用程序错误处理程序中处理路由。详情请见stackoverflow.com/questions/6733064/…
      • 感谢您的回复;我在 下插入 ,如下所示; 。但仍会显示详细错误。
      • 您是否将 defaultRedirect 属性设置为指向动作或静态 html 文件?有关详细信息,请参阅我在评论中放置的链接。
      猜你喜欢
      • 2019-09-05
      • 2013-04-21
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多