【发布时间】:2012-03-06 08:46:24
【问题描述】:
我想将客户错误设置为 true,以防止用户查看有关我的应用程序的详细信息。但我找不到我应该在哪里写这个<customErrors mode="on">;它应该在 web.config 中还是在 web、debug.config 中还是在哪里?
BR
【问题讨论】:
标签: asp.net-mvc-3 web-config custom-errors
我想将客户错误设置为 true,以防止用户查看有关我的应用程序的详细信息。但我找不到我应该在哪里写这个<customErrors mode="on">;它应该在 web.config 中还是在 web、debug.config 中还是在哪里?
BR
【问题讨论】:
标签: asp.net-mvc-3 web-config custom-errors
根据我的经验,我们应该在发布模式下将自定义错误设为开启,并在调试时将其关闭。要自动执行此操作,我们可以使用 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 转换,开发人员可以在网络服务器上查看网站时看到错误。
<customErrors 节点需要以某种形式存在于 web 配置中,才能成为 xdt:Transform="Replace"d - 如果 web 中没有 <customErrors 节点.config,然后将这些行添加到 web.Release.config 将不会导致添加节点。如果 web.config 根本没有 <customErrors 节点并且您希望转换添加它,请使用 xdt:Transform="Insert"
放入 Web.config 并为重定向创建一个错误页面。 在 MVC 中,您有 HandleErrorAttribute,在类上标记它以处理意外错误,记录它并抛出错误页面。自定义错误是具有已知状态代码的特定错误的默认页面。
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/PageNotFound?" />
</customErrors>
</system.web>
【讨论】:
这将取决于,但通常应该在 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。
【讨论】: