Подтвердить что ты не робот

Как сделать исключение в Web API?

Как я могу сделать исключение в ASP.net Web Api?

Ниже мой код:

public Test GetTestId(string id)
{
    Test test = _test.GetTest(id);

    if (test == null)
    {
        throw new HttpResponseException(HttpStatusCode.NotFound);
    }

    return test;
}

Я не думаю, что я поступаю правильно. Как мой клиент знает, что это ошибка HTTP 404?

4b9b3361

Ответ 1

Это абсолютно нормально.

В качестве альтернативы, если вы хотите предоставить дополнительную информацию (чтобы, как вы говорите, клиент отличался от обычного 404):

    if (test == null)
    {
         throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, 
"this item does not exist"));
    }

Ответ 2

Это поможет вам лучше понять обработку ошибок WebAPI:

http://blogs.msdn.com/b/youssefm/archive/2012/06/28/error-handling-in-asp-net-webapi.aspx

То, что у вас есть в фрагменте кода, должно работать. Сервер отправит обратно 404 Not Found клиенту, если тест равен null без тела ответа. Если вам нужен орган ответа, вам следует рассмотреть возможность использования Request.CreateErrorResponse, как описано в сообщении выше, и передать этот ответ на исключение HttpResponseException.