Как исправить тайм-аут .NET Webservice, вызывающий UnsupportedMediaException в клиенте Java? - PullRequest
0 голосов
/ 04 декабря 2008

В настоящее время у меня есть веб-служба .net SOAP с таймаутом для запроса, который я установил с помощью

Server.ScriptTimeout = TIME_OUT;

У меня есть Java-клиент, вызывающий указанный веб-сервис. Однако по истечении времени ожидания я получаю это исключение:

Exception in thread "Thread-9" com.sun.xml.ws.server.UnsupportedMediaException: Unsupported Content-Type: text/html; charset=utf-8 Supported ones are: [text/xml]

Что происходит, так это то, что веб-служба возвращает страницу ошибки html с кодом таймаута http (я думаю, 503), которого мой код Java (сгенерированный с использованием WSDLimport) не ожидает.

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

EDIT:
Я использую WSDLImport из дистрибутива Glassfish 2.

Ответы [ 2 ]

1 голос
/ 05 декабря 2008

Это известная проблема со стеком Sun JAX-WS.

Для справки, код HTTP 500 фактически означает, что на сервере произошла внутренняя ошибка сервера. Я не уверен, почему .NET отправляет это, а не HTTP 503 Служба недоступна.

0 голосов
/ 04 декабря 2008

Вы можете сделать свой веб-сервис асинхронным . Затем запустите таймер с вашим тайм-аутом в BeginMyMethod и добавьте пользовательское исключение в ваш метод EndMyMethod. Он будет заключен в исключение SOAP и отправлен клиенту как таковой.

...