Exception handling in REST service
I have a REST service and I want to have a helper class that handle exceptions
Мой код выглядит следующим образом:
[WebGet(UriTemplate = "/Test/{param}")]
public Stream Test(string param)
{
if (param == "Ok")
return Process(param);
else
{
RESTException(System.Net.HttpStatusCode.BadRequest, "Param not ok");
return null;
}
}
private void RESTException(System.Net.HttpStatusCode httpStatusCode, string message)
{
OutgoingWebResponseContext response = WebOperationContext.Current.OutgoingResponse;
response.StatusCode = httpStatusCode; // or anything you want
response.StatusDescription = message;
}
I test from browser, but when I pass wrong param, eg
http://myaddress/Service/Test/badparam
nothing shows up in the browser.
Что не так в моем коде?
2 ответа
Решение
Я изменил RESTException, как показано ниже, который выдает правильное исключение, и slsdo показывает правильную информацию об исключении, когда REST тестируется из браузера или из тестового клиента REST, предоставленного REST WCF WebApi
private void RESTException(SelectFault fault, System.Net.HttpStatusCode httpStatusCode)
{
throw new WebFaultException<string>(fault.ErrorMessage, httpStatusCode);
}
+ Изменить
RESTException(System.Net.HttpStatusCode.BadRequest, "Param not ok");
return null;
в
RESTException(System.Net.HttpStatusCode.BadRequest, "Param not ok");
return "Param not ok";