asp.net-mvc-3 - 如何让 MVC3 给出更少的错误信息

标签 asp.net-mvc-3 http rest web-config

默认情况下,MVC3 应用程序会给出很多关于 404、无效动词、找不到路由等的信息。它有这个极其冗长的错误页面。

我们怎样才能改变这种行为,这样客户端仍然会收到 404 和其他任何内容,但不会返回此类内容? (ESPECIALLY 底部的东西,显示我们的私有(private)框架信息、类名等)

<html>
    <head>
        <title>The resource cannot be found.</title>
        <style>
         body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 
         p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
         b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
         H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
         H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
         pre {font-family:"Lucida Console";font-size: .9em}
         .marker {font-weight: bold; color: black;text-decoration: none;}
         .version {color: gray;}
         .error {margin-bottom: 10px;}
         .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
        </style>
    </head>

    <body bgcolor="white">

            <span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>

            <h2> <i>The resource cannot be found.</i> </h2></span>

            <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">

            <b> Description: </b>HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. &nbsp;Please review the following URL and make sure that it is spelled correctly.
            <br><br>

            <b> Requested URL: </b>/Foo<br><br>

            <hr width=100% size=1 color=silver>

            <b>Version Information:</b>&nbsp;Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.225

            </font>

    </body>
</html>
<!-- 
[HttpException]: A public action method &#39;Index&#39; was not found on controller &#39;MySystem.Api.Rest.Controllers.MyController&#39;.
   at System.Web.Mvc.Controller.HandleUnknownAction(String actionName)
   at System.Web.Mvc.Controller.ExecuteCore()
   at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
   at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)
   at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__5()
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0()
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
   at System.Web.Mvc.MvcHandler.<>c__DisplayClasse.<EndProcessRequest>b__d()
   at System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f)
   at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action)
   at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
-->

最佳答案

请参阅此处的第 9 步以打开零售模式。

默认 MVC 模板已打开自定义错误。

启用此功能的一种方法是启用零售模式。这将为您计算机上的每个站点启用自定义错误。

https://kevww.wordpress.com/tag/mvc/

基本上只需进入您的 machine.config 并将其设置在那里。 (例如 c:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config)

<system.web>  <deployment retail="true" /></system.web>

同时安装 ELMAH 以自动捕获您的错误(记录它们)。

http://code.google.com/p/elmah/wiki/MVC

关于asp.net-mvc-3 - 如何让 MVC3 给出更少的错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9426096/

相关文章:

c# - ASP.NET MVC3 - 动态添加项目到对象数组

java - URLConnection 中的 Android 用户代理

c# - 如何在传输过程中关闭请求流时获取 HTTP 响应

api - 用于检索对象集基数的 REST API

java - 通过@Inject 将业务逻辑暴露给 Restful 服务的最佳方式

asp.net-mvc-3 - 如何在 LINQ to SQL 中制作此 SQL?

c# - Entity Framework 4.1。更新多对多关系。这是正确的方法吗?

asp.net-mvc - 使用 Razor 的 MvcContrib FluentHtml?

java - 应在我的应用程序中检查哪些 HTTP 状态代码

javascript - Ember 断言失败 : The response from a findQuery must be an Array, 未定义