2015-01-23 2 views
0

Я trowing исключение из WebAPI, как показано нижекак бросить и поймать веб-апи исключение?

Catch(ex) 
{ 
var rEx =  HttpResponseException(r.CreateErrorResponse(HttpStatusCode.NotFound,ex)); 
     throw rEx; 
} 

Мой вопрос «Как поймать это исключение в ОС Windows Application»; i.e поймать это исключение, откуда я звоню в Web Api Method ????

+0

Как приложение вызывает метод WebAPI? Вы пытались обернуть этот вызов 'try/catch'? – David

ответ

0

Вы получите ответ с кодом http 500 - код внутреннего сервера. Таким образом, чтобы «поймать» это исключение, просто проверьте код ответа в вызывающем приложении.

0

Это ответило бы клиенту ответ 404. Предполагая, что вы используете WebClient назвать эту услугу, это может быть сделано несколькими способами:

1) Вы можете проверить статус ответа, как это:

HttpResponseMessage response = await client.GetAsync("api/products/1"); 
if (response.IsSuccessStatusCode) 
{ 
     //write app code. 
} 

2) Или. . в Try/поймать моды, проверяя: resp.EnsureSuccessStatusCode(), который будет бросать исключение, если ответ не 200. Как это:

try 
{ 
    HttpResponseMessage response = await client.GetAsync("api/products/1"); 
    resp.EnsureSuccessStatusCode(); // Throw if not a success code. 

    // ... 
} 
catch (HttpRequestException e) 
{ 
// Handle exception. 
} 

Он подробно обсуждается here