WCF .Net 4.0 рассматривает WebProtocolException как необработанное исключение - PullRequest
2 голосов
/ 11 апреля 2010

Я пытаюсь создать API с использованием WCF и .Net 4, однако, когда я выкидываю WebProtocolException, он не отображает красивое сообщение об ошибке, как должно, а обрабатывает его как необработанное исключение.

Я использую WebServiceHost2Factory.

Кто-нибудь еще использовал WebProtocolException с .net 4?

Пример моего звонка ниже

throw new WebProtocolException(System.Net.HttpStatusCode.BadRequest, "The DateFrom parameter is invalid",
new Error()
{
    Code = 6002,
    Message = "Please ensure your dates are in the following format: yyyy/MM/dd hh:mm:ss"
},
null, null);

1 Ответ

1 голос
/ 14 апреля 2010

У меня те же проблемы после обновления моего проекта RESTful в Visual Studio 2010. В качестве обходного пути мне нужно:

  • удалить «Cache-Control» из заголовка исходящего ответа в отношении WebOperationContext.Current.OutgoingResponse.Headers.Remove (HttpResponseHeader.CacheControl);

    или

    WebOperationContext.Current.OutgoingResponse.Headers.Remove ("Cache-Control"); перед выдачей исключения WebProtocolException

или

  • явно установить код состояния в исходящем ответе относительно WebOperationContext.Current.OutgoingResponse.StatusCode = statusCode; перед генерацией исключения WebProtocolException (statusCode, ...)

В обычном случае "throw WebProtocolException (statusCode, ...);" должен установить код состояния исходящего ответа, но он не будет установлен, если определено «Cache-Control». Я использую в большинстве ответов «Cache-Control», установленный на «max-age = 0», чтобы быть уверенным, что все запросы AJAX будут установлены на сервер. Итак, я описал проблемы с этой ошибкой в ​​WebProtocolException.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...