>백엔드 개발 >C++ >Application_Error를 사용하여 ASP.NET MVC에서 사용자 지정 오류 처리를 구현하는 방법은 무엇입니까?

Application_Error를 사용하여 ASP.NET MVC에서 사용자 지정 오류 처리를 구현하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-14 10:02:47274검색

How to Implement Custom Error Handling in ASP.NET MVC using Application_Error?

Global.asax의 Application_Error 이벤트를 사용하여 ASP.NET MVC에서 사용자 정의 오류 처리 구현

ASP.NET MVC의 Global.asax 파일에 있는 Application_Error 이벤트를 통해 개발자는 애플리케이션에서 처리되지 않은 예외와 오류를 처리할 수 있습니다. 일반적인 방법은 오류 HTTP 상태 코드를 기반으로 사용자를 특정 오류 페이지로 리디렉션하는 것입니다.

이를 수행하려면 다음과 같이 Application_Error 이벤트 핸들러를 수정하면 됩니다.

<code class="language-csharp">protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();
    Response.Clear();

    HttpException httpException = exception as HttpException;
    if (httpException != null)
    {
        string action;

        switch (httpException.GetHttpCode())
        {
            case 404:
                // 页面未找到
                action = "HttpError404";
                break;
            case 500:
                // 服务器错误
                action = "HttpError500";
                break;
            default:
                action = "General";
                break;
        }

        // 清除服务器上的错误
        Server.ClearError();

        Response.Redirect(String.Format("~/Error/{0}/?message={1}", action, exception.Message));
    }
}</code>

이 개선된 코드에서는 오류 컨트롤러에 대한 새 경로를 생성하는 대신 컨트롤러/작업으로 직접 리디렉션하고 오류 세부 정보를 쿼리 문자열 매개변수로 전달합니다. 그런 다음 오류 컨트롤러는 메시지를 수신하고 작업 메서드에 지정된 보기를 사용하여 표시합니다.

<code class="language-csharp">// GET: /Error/HttpError404
public ActionResult HttpError404(string message)
{
    return View("SomeErrorView", message);
}</code>

이 접근 방식을 사용하면 오류 처리가 단순화되고 추가 라우팅이 필요하지 않습니다. 그러나 예를 들어 오류 처리 중에 루프 또는 세션 생성이 많이 발생하는 경우 성능 문제가 발생할 수 있다는 점을 염두에 두어야 합니다.

위 내용은 Application_Error를 사용하여 ASP.NET MVC에서 사용자 지정 오류 처리를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.