ASP.net 웹 API에서 customexceptionhandlers를 사용하는 방법

Tvt

사용자 지정 예외 처리기를 이해하려고하지만 요령을 이해하지 못하고 있습니다. 다음 페이지에 설명 된대로 사용자 지정 예외 처리기를 구현해 보았습니다.
https://www.exceptionnotfound.net/the-asp-net-web-api-exception-handling-pipeline-a-guided-tour/ https : // docs.microsoft.com/en-us/aspnet/web-api/overview/error-handling/web-api-global-error-handling

이제 내 코드는 다음과 같습니다.

public class CustomRestErrorHandlerException : ExceptionHandler
{
    public void CustomError(String error)
    {
        var message = new HttpResponseMessage(HttpStatusCode.NoContent)
        {
            Content = new StringContent("An unknown error occurred saying" + error)
        };

        throw new HttpResponseException(message);
    }

    public override void Handle(ExceptionHandlerContext context)
    {
        if (context.Exception is ArgumentNullException)
        {
            var result = new HttpResponseMessage(HttpStatusCode.BadRequest)
            {
                Content = new StringContent(context.Exception.Message),
                ReasonPhrase = "ArgumentNullException"
            };

            context.Result = new ErrorMessageResult(context.Request, result);
        }
        else if (context.Exception is ArgumentException)
        {
            var result = new HttpResponseMessage(HttpStatusCode.NoContent)
            {
                Content = new StringContent(context.Exception.Message),
                ReasonPhrase = "Argument is not found"
            };

            context.Result = new ErrorMessageResult(context.Request, result);
        }
        else if (context.Exception is ArgumentOutOfRangeException)
        {
            var result = new HttpResponseMessage(HttpStatusCode.NotImplemented)
            {
                Content = new StringContent(context.Exception.Message),
                ReasonPhrase = "Argument is out of range"
            };

            context.Result = new ErrorMessageResult(context.Request, result);

        }
        else
        {
            CustomError(context.Exception.Message);
        }
    }

    public class ErrorMessageResult : IHttpActionResult
    {
        private HttpRequestMessage _request;
        private HttpResponseMessage _httpResponseMessage;

        public ErrorMessageResult(HttpRequestMessage request, HttpResponseMessage httpResponseMessage)
        {
            _request = request;
            _httpResponseMessage = httpResponseMessage;
        }

        public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
        {
            return Task.FromResult(_httpResponseMessage);
        }
    }
}

그런 다음 내가 분명히 잘못한 예외 처리기를 호출하려고합니다. (이것은 아마도 <<를 이해하지 못합니다.

    [Route("api/***/***")]
    [HttpGet]
    public IHttpActionResult Clear****()
    {
        try
        {
            // try clearing
        }
        catch(Exception e)
        {
            throw new CustomRestErrorHandlerException();     << error occurs here 
        }

        return this.Ok();
    }

보시다시피 예외가 예외 처리기가 아니기 때문에 오류가 발생하지만 어디에도 설명되지 않았으므로 사용자 지정 예외 처리기를 통해 예외를 throw하는 방법을 모릅니다.

누구든지 작은 예를 들어 설명 할 수 있습니까?

데 간트

ExceptionHandler 는 Web API 구성에 등록되어야합니다. 이는 아래와 같이 WebApiConfig.cs 파일에서 수행 할 수 있습니다 System.Web.Http.HttpConfiguration. 여기서 config는 유형 입니다.

config.Services.Replace(typeof(IExceptionHandler), new GlobalExceptionHandler());

등록되면 처리되지 않은 예외 중에 자동으로 호출됩니다. 이를 테스트하기 위해 다음과 같은 작업 메서드에서 예외를 throw 할 수 있습니다.

[Route("api/***/***")]
[HttpGet]
public IHttpActionResult Clear****()
{
    try
    {
        // try clearing
    }
    catch(Exception e)
    {
        throw new ArgumentNullException();     << error occurs here 
    }

    return this.Ok();
}

이제 예외 처리기에 중단 점을 놓고 전역 ExceptionHandler에서 처리되지 않은 예외를 포착하는 방법을 볼 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

ASP.net 웹폼에서 FuelUX 마법사를 사용하는 방법

분류에서Dev

ASP.net 웹폼에서 FuelUX 마법사를 사용하는 방법

분류에서Dev

asp.net C #을 사용하여 API를 통해 PHP 웹 사이트를 호출하는 방법

분류에서Dev

Angular를 사용하여 asp.net 웹 API에 파일을 보내는 방법은 무엇입니까?

분류에서Dev

외부 asp.net 애플리케이션에서 Dynamics AX 웹 서비스를 사용하는 방법

분류에서Dev

전역 서버에 ASP.NET C # 웹 사이트를 게시하는 방법

분류에서Dev

asp.net 웹 애플리케이션 내에서 cloudinary url2png를 사용하는 방법

분류에서Dev

asp.net 3.5에서 asp.net 4.0 웹 사이트를 실행하는 방법.?

분류에서Dev

Asp.net 웹 API를 사용하는 AKKA.NET

분류에서Dev

ASP.NET Core 3.1에서 실행되는 OData 지원 웹 API에 Swagger를 추가하는 방법

분류에서Dev

ASP.NET Framework 웹 API에서 사용자 지정 JSON 개체를 반환하는 방법은 무엇입니까?

분류에서Dev

C # ASP.Net : WSDL 또는 프록시 클래스를 사용하지 않고 .NET 4.0 C #에서 웹 서비스를 호출하는 방법

분류에서Dev

서버 (개인용 랩톱)에서 SQL Server 데이터베이스를 사용하여 Asp.net 웹 사이트를 호스팅하는 방법

분류에서Dev

Asp.Net 웹 API-모든 레코드를 얻는 방법

분류에서Dev

Powershell없이 Windows 10 IoT Core에서 Asp.Net 5 웹 API를 호스팅하는 방법

분류에서Dev

Visual Studio를 사용하여 ASP.NET 웹 응용 프로그램 (.Net Framework)을 FTP 서버에 게시하는 방법은 무엇입니까?

분류에서Dev

ASP.NET Core의 웹 서비스를 IIS에 게시하는 방법

분류에서Dev

asp.net에서 Page_Init를 사용하는 방법

분류에서Dev

asp.net에서 <% %>를 사용하는 방법?

분류에서Dev

Ajax asp .net에서 CommandArgument를 사용하는 방법

분류에서Dev

VB asp.net에서 변수를 사용하는 방법

분류에서Dev

ASP.NET Core 1.0에서 UseStaticFiles를 사용하는 방법

분류에서Dev

webapi + asp.net에서 response.redirect를 사용하는 방법?

분류에서Dev

asp.net MVC 웹 사이트에 Bing Cognitive Web Search API를 통합하는 방법

분류에서Dev

웹 앱에서 웹 API를 사용하는 .Net Core

분류에서Dev

ASP.NET 웹 API에서 GET 매개 변수를 가져 오는 방법은 무엇입니까?

분류에서Dev

ASP.NET 웹 API에서 GET 매개 변수를 가져 오는 방법은 무엇입니까?

분류에서Dev

우리가 IdentityProvider이고 ASP.NET에서 핸드 세이크를 시작했을 때 사용자를 파트너 웹 사이트로 이전하는 방법

분류에서Dev

asp.net 웹 사이트에 "서비스 참조"를 추가하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    ASP.net 웹폼에서 FuelUX 마법사를 사용하는 방법

  2. 2

    ASP.net 웹폼에서 FuelUX 마법사를 사용하는 방법

  3. 3

    asp.net C #을 사용하여 API를 통해 PHP 웹 사이트를 호출하는 방법

  4. 4

    Angular를 사용하여 asp.net 웹 API에 파일을 보내는 방법은 무엇입니까?

  5. 5

    외부 asp.net 애플리케이션에서 Dynamics AX 웹 서비스를 사용하는 방법

  6. 6

    전역 서버에 ASP.NET C # 웹 사이트를 게시하는 방법

  7. 7

    asp.net 웹 애플리케이션 내에서 cloudinary url2png를 사용하는 방법

  8. 8

    asp.net 3.5에서 asp.net 4.0 웹 사이트를 실행하는 방법.?

  9. 9

    Asp.net 웹 API를 사용하는 AKKA.NET

  10. 10

    ASP.NET Core 3.1에서 실행되는 OData 지원 웹 API에 Swagger를 추가하는 방법

  11. 11

    ASP.NET Framework 웹 API에서 사용자 지정 JSON 개체를 반환하는 방법은 무엇입니까?

  12. 12

    C # ASP.Net : WSDL 또는 프록시 클래스를 사용하지 않고 .NET 4.0 C #에서 웹 서비스를 호출하는 방법

  13. 13

    서버 (개인용 랩톱)에서 SQL Server 데이터베이스를 사용하여 Asp.net 웹 사이트를 호스팅하는 방법

  14. 14

    Asp.Net 웹 API-모든 레코드를 얻는 방법

  15. 15

    Powershell없이 Windows 10 IoT Core에서 Asp.Net 5 웹 API를 호스팅하는 방법

  16. 16

    Visual Studio를 사용하여 ASP.NET 웹 응용 프로그램 (.Net Framework)을 FTP 서버에 게시하는 방법은 무엇입니까?

  17. 17

    ASP.NET Core의 웹 서비스를 IIS에 게시하는 방법

  18. 18

    asp.net에서 Page_Init를 사용하는 방법

  19. 19

    asp.net에서 <% %>를 사용하는 방법?

  20. 20

    Ajax asp .net에서 CommandArgument를 사용하는 방법

  21. 21

    VB asp.net에서 변수를 사용하는 방법

  22. 22

    ASP.NET Core 1.0에서 UseStaticFiles를 사용하는 방법

  23. 23

    webapi + asp.net에서 response.redirect를 사용하는 방법?

  24. 24

    asp.net MVC 웹 사이트에 Bing Cognitive Web Search API를 통합하는 방법

  25. 25

    웹 앱에서 웹 API를 사용하는 .Net Core

  26. 26

    ASP.NET 웹 API에서 GET 매개 변수를 가져 오는 방법은 무엇입니까?

  27. 27

    ASP.NET 웹 API에서 GET 매개 변수를 가져 오는 방법은 무엇입니까?

  28. 28

    우리가 IdentityProvider이고 ASP.NET에서 핸드 세이크를 시작했을 때 사용자를 파트너 웹 사이트로 이전하는 방법

  29. 29

    asp.net 웹 사이트에 "서비스 참조"를 추가하는 방법은 무엇입니까?

뜨겁다태그

보관