2015-07-22 3 views

ответ

2

Вы должны переопределить DelegatingHandler абстрактный класс.

увидеть здесь Uniform, consistent error responses from ASP.Net Web API 2

и здесь, ASP.NET Web API Exception Handling

+0

Вместо использования промежуточного программного обеспечения OWIN, поскольку обновление в ссылке # 2 предлагает? – user2966445

+0

, вы можете перейти к промежуточному программному обеспечению OWIN. Мое предложение - попробовать оба и посмотреть, какой из них лучше для вас –

1

Простой способ сделать это с помощью "DelegatingHandler"

  1. Первый шаг заключается в создании нового класса наследует от DelegatingHandler:

    public class ApiGatewayHandler : DelegatingHandler 
        { 
         protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
         { 
         var response = await base.SendAsync(request, cancellationToken); 
    
         if (response!=null && response.StatusCode == HttpStatusCode.NotFound) 
         { 
          var msg = await response.Content.ReadAsStringAsync(); 
    
          //you can change the response here 
          if (msg != null && msg.Contains("No HTTP resource was found")) 
          { 
           return new HttpResponseMessage 
           { 
            StatusCode = HttpStatusCode.NotFound, 
            Content = new ObjectContent(typeof(object), new { Message = "New Message..No HTTP resource was found that matches the request URI" }, new JsonMediaTypeFormatter()) 
           }; 
          } 
         } 
         return response; 
    
        return response; 
    } 
    

    }

  2. зарегистрируйте этот класс в Web API Регистрация конфигурационного файла

    public static void Register(HttpConfiguration config){ 
        public static void Register(HttpConfiguration config) 
        { 
         // you config and routes here     
    
         config.MessageHandlers.Add(new ApiGatewayHandler()); 
    
         //.... 
        } 
    } 
    

То есть это. То же самое, если вам нужно изменить любое другое сообщение об ошибке.

Смежные вопросы