Ответы об ошибках REST WCF, отправленные до завершения обработки сервиса (без ошибок) - PullRequest
0 голосов
/ 01 июня 2011

В нашем приложении некоторые из наших вызовов WCF в стиле REST не выполняются. Эти вызовы являются частью реализаций сервисов класса C #, которые имеют много других работающих вызовов одноранговых сервисов. Кроме того, вызовы службы для сбойных методов не завершаются при всех обстоятельствах.

По сути, я вижу ситуацию, когда при просмотре вызова службы XHR в FireBug, запрос отправляется. Затем, примерно через 1 секунду, браузер сообщает, что ответ 404 Not Found или, возможно, что-то в серии 500 - отличается в зависимости от ситуации.

Если я ставлю точку останова в коде сервера, сервисный вызов достигает кода пользователя, и этот код дает полный правильный результат. Тем не менее, браузер по-прежнему возвращает эти коды ошибок. И, он не ждет, пока пользовательский код завершит обработку - это все еще занимает около 1 секунды, а не время ожидания.

След WCF не дает никаких ответов (для меня), но дает другую подсказку. Условие ошибки System.InvalidOperationException с сообщением «От этого RequestContext уже отправлен ответ». Я не думаю, что мог бы отправить два ответа на один и тот же запрос в WCF, если бы попытался.

Я не ожидаю, что кто-то сможет диагностировать мою проблему WCF именно с помощью этой неполной картины сценария, но, возможно, кто-то сможет объяснить механизмы на работе, которые позволят сделать вызов службы, запрос на получен и направлен, правильный ответ должен быть сгенерирован, в то время как сообщение об ошибке возвращается от WCF отдельно (и возможно перед нормальным ответом).

1 Ответ

1 голос
/ 01 июня 2011

Я видел ту же проблему в несколько ином контексте.

Что происходит, это:

  • http-запрос приходит на сервер
  • Сервер начинает отвечать
  • Часть, которая отправляется первой - это http-заголовок
  • Когда заголовок уже отправлен клиенту, некоторый код пытается записать в заголовок
  • Так как заголовок уже за дверью ... БУМ

Это также объясняет, почему вы получаете сообщение об ошибке до завершения обработки сервером.

Проверьте ваш код на наличие всего, что может установить значение в заголовке http.

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