2017-02-14 2 views
0

Я должен позвонить в веб-службу в своем приложении C#. При добавлении ссылки на службу в Visual Studio, чтобы потреблять службы, в ситуации исключения я получаю это сообщение:WCF в клиенте «ссылка на службу» дает меньше информации в сообщении об исключении, чем клиент «веб-ссылки»

-заголовка Content-Type HTTP требуется для SOAP-сообщений и никто не был найден.

Но, когда я добавляю ссылку на веб-страницу, сообщение более богатое и легко понять проблему. Заключительная часть этого сообщения - сообщение бизнес-ошибки, сгенерированное службой. Мне предоставлен неверный параметр токена аутентификации для этой службы, поэтому возвращается это сообщение об ошибке:

Клиент обнаружил, что тип ответа соответствует типу '', но ожидаемый 'text/xml'.

Сбой запроса с сообщением об ошибке:

-

WEB SERVICE ОШИБКА: UNAUTHENTICATED_ACCESS

я предпочитал использовать "сервис" ссылочный подход, но сейчас я нахожусь в сомнении. Есть ли способ улучшить этот вид исключений или зарегистрировать необработанный ответ, используя «служебную ссылку»?

+0

Второе сообщение нечеткое, оно сообщает вам, что заголовок был пуст, когда, по всей вероятности, он, вероятно, отсутствовал, и на самом деле сообщает об ошибке аутентификации, которая просто загрязняет воду. –

ответ

1

Я думаю, что первое сообщение намного яснее.

Это сообщение о том, в чем проблема, а именно заголовок HTTP Content-Type отсутствует в ответе службы. Несмотря на то, что этот заголовок не является обязательным, то HTTP спецификации говорят, что вы должны использовать его (от here):

Любой HTTP/1.1 сообщение, содержащее тело объекта следует включать поле заголовка Content-Type, определяющий тип носителя это тело.

Microsoft, очевидно, встроена в свою генерацию прокси, создавая предположение, что этот заголовок всегда будет присутствовать.

И нет, вы не должны использовать WebReference. Это из .net 1.1

+0

Спасибо @tom. Я частично согласен с вами, но я не могу изменить службу, и ее ответ содержит полезное сообщение: ** ОШИБКА WEB-СЕРВИСА: НЕОПРЕДЕЛЕННАЯ_ACCESS **. – Morteza

+0

@morteza это не полезное сообщение. Проблема не в аутентификации. Проблема в том, что служба не соответствует руководству w3. –

+0

Я вижу. Здесь звучит недоразумение. Это сообщение является сообщением бизнес-ошибки, сгенерированным службой. Мне предоставлен недопустимый параметр токена аутентификации для этой службы, чтобы это сообщение об ошибке было возвращено. – Morteza

Смежные вопросы