ASP.NET MVC 통합 예외 처리

3286 단어 asp.net
선언:
오늘 아침에 기사를 봤어요. 지식 탐구에 중독되었지만, 작품적 사고는 없었다.;감명을 받았습니다. 원래 자신도 그랬고 모든 것에 큰 흥미를 가지거나 자신이 배우기를 바랐습니다. 1년 후에 자신이 모든 것이 피상적이고 아무것도 정교하지 않다는 것을 발견했습니다!결국 진정한 소는 어느 분야의 소들이지 전능하지 않다는 것을 알게 되었다.그러니까 정제할 때가 됐어.
이 글은 오늘날의 또 다른 읽기에서 유래한 것이다. 작가는 독자가 쓴 프로그램이 이미 출시되었어도 사용자가 참을 수 없을 때의 피드백을 기다리지 않고 신속하게 자신의 버그를 발견할 수 있기를 바란다. 이렇게 하면 사용자가 사용하는 소프트웨어에 버그가 없다는 착각을 하게 하고 이를 실현할 수 있는 가장 관건적인 것은 버그를 발견할 수 있느냐 없느냐이다.그래서 돼지가 오늘 사실 오랫동안 지켜봤던 주제를 썼어요. 통일된 이상 처리.
이루어지다
ASP.NET MVC는 이상 처리를 위한 편리한 메커니즘을 제공합니다. 이상 처리가 필요한 Controller에서 OnException을 다시 작성합니다.프로그램 전체가 비정상적인 처리를 필요로 한다면, 먼저 Base Controller를 쓰고, 다른 모든 Controller는 그것을 계승한 다음 Base Controller에서 OnException을 다시 쓸 수 있습니다.
protected override void OnException(ExceptionContext filterContext)

{

    Log(filterContext);

    base.OnException(filterContext);

}



private void Log(ExceptionContext filterContext)

{

    string fileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, exceptionFileName);

    StreamWriter sw = System.IO.File.AppendText(fileName);



    System.DateTime dt = DateTime.Now;

    string ip = RY.Common.IPHelp.ClientIP;

    string url = Request.Url.ToString();

    sw.Write(string.Format("Time:{0:G}; ClientIp:{1}; URL:{2}; Message:{3}
", dt, ip, url, filterContext.Exception.Message)); sw.Close(); }

그런 다음 Base Controller에서 자신의 Controller를 상속시키면 됩니다.
또한 Action에 대한 포획 이상만 있다면 Handle Error Attribute에서 계승된 Attribute를 쓸 수 있습니다.
public class ExceptionLogAttribute:HandleErrorAttribute

{

       public override void OnException(ExceptionContext filterContext)

       {

            base.OnException(filterContext);

       }

}

데이터베이스 또는 파일 저장
세심한 독자들은 상술한 코드인 돼지가 사이트와 폴더 아래의 파일에 저장되어 있다는 것을 발견할 수 있다.여기에는 이상 데이터를 어디에 저장하는가의 문제가 관련되어 있다.두 가지 선택 데이터베이스와 파일이 있습니다.그러나 돼지는 데이터베이스에 저장할 때 문제가 존재한다. 데이터베이스가 연결되지 않을 때 사이트도 오류를 보고한다. 이때 오류가 데이터베이스에 존재하는 메커니즘을 사용하면 기록할 수 없고 파일에 존재하는 것은 이 문제가 존재하지 않는다. 웹 서비스가 도망가지 않는 한.원인을 종합해 보면 돼지는 로그 파일을 파일에 저장하는 방법을 취했다.

좋은 웹페이지 즐겨찾기