2012-02-24 5 views
1

기본적으로 MVC3 응용 프로그램은 404, 유효하지 않은 동사, 경로를 찾을 수 없음 등의 정보를 많이 제공합니다. 매우 자세한 오류 페이지가 있습니다.MVC3에서 오류 정보를 덜 제공하는 방법

클라이언트가 여전히 404의 및 다른 어떤하지만, 이런 종류의 물건없이 반환 얻을 수 있도록 우리가이 동작을 변경할 수 있습니다 어떻게 ? (특히 우리의 개인 프레임 워크 정보, 클래스 이름 등이 표시 하단에 그 물건)

<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) 
--> 
+2

구성에 사용자 정의 오류를 정의하십시오. http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx –

답변

2

페이지의 9 단계를 참조하십시오.

기본 MVC 템플릿에 사용자 지정 오류가 설정되어 있습니다.

정품 모드를 활성화하는 방법은 소매 모드입니다. 이렇게하면 컴퓨터의 모든 사이트에 대해 사용자 정의 오류를 사용할 수 있습니다.

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

은 기본적으로 그냥은 Machine.config로 이동하여 설정합니다. (예 : C : \ WINDOWS \ Microsoft.NET \ 프레임 워크 \ v4.0.30319 \ 구성 \ machine.config에)
 
<system.web> <deployment retail="true" /></system.web> 

또한 오류 (그 로그) 자동으로 캡처 ELMAH를 설치합니다.

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

0

무시하면 오류에 대한 사용자에게 원하는대로 당신의 컨트롤러와 쇼에 OnException 방법 (포함 예 : 사용자 정의 페이지 스타일 등).

예를 들어, 소매 모드를 설정하려면 여기를 http://blog.dantup.com/2009/04/aspnet-mvc-handleerror-attribute-custom.html

+0

/foo/bar/whatever/IMadeThisUp /와 같은 말도 안되는 경로를 입력하면 어떻게 될까요? 주로 이러한 오류가 발생합니다. –

1

당신의 Web.config에서 compilition debug="false"을 설정할 수 있습니다. 당신은 IIS에서 호스팅되는 모든 웹 사이트에 대해이 작업을하려면 사용자 정의 오류 페이지를 표시 할 경우

, 당신은 당신의 Web.config에서 HttpErrors 섹션을 대체 할 수 있습니다,이 Machine.config

retail mode=true을 설정할 수 있습니다.

관련 문제