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";
Другие вопросы по тегам