Может ли клиент .Net 1.1 вызывать веб-сервис .Net 2.0? Если так, то как? - PullRequest
0 голосов
/ 07 мая 2010

Мы наконец обновили наши веб-сервисы с .Net 1.1 до .Net 2.0 / 3.5. Один из клиентов, который вызывает эти веб-службы, запускается как служба Windows. Вероятно, что служба Windows будет обновлена ​​только через некоторое время после обновления сервера на сайтах клиентов.

Можно ли помассировать мои веб-службы .Net 2.0, чтобы они правильно обслуживали вызовы от клиента .Net 1.1? В моей тестовой среде я подключаюсь к веб-службе .Net 2.0 от клиента .Net 1.1 и получаю ошибку 401.1 от IIS. Веб-сервис настроен на анонимный доступ. Те же учетные данные работают при подключении к веб-службе .Net 2.0 из клиента .Net 2.0.

Спасибо за вашу помощь,

-colin-

Ответы [ 4 ]

2 голосов
/ 07 мая 2010

Веб-сервисы должны быть независимыми от платформы. Если ваш веб-сервис написан правильно, то любой клиент на любой платформе, поддерживающей SOAP 1.1, должен иметь возможность использовать его.

Единственное место, где эта может упасть, - это если ваша служба возвращает или получает типы, специфичные для .NET. Например, если вы отправляете или получаете набор данных (DataSet), могут возникнуть проблемы - набор данных специфичен не только для .NET, но и для конкретных версий .NET. В области XML и сериализации XML было сделано много изменений между .NET 1.1 и .NET 2.0, и в конечном итоге вы могли увидеть одну из этих проблем.

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

1 голос
/ 07 мая 2010

Зависит от сервиса. Если служба .NET 2.0:

  • настроен для поддержки SOAP 1.1
  • Не использует WSE 3.0 (WSE 2.0 в порядке)
  • Не использует типы, допускающие обнуление (не поддерживается в .NET 1.1)
  • Принимает и возвращает только примитивы или классы POCO (без DataSets и т. Д.)

Тогда это совместимо.

Если вы получаете ошибку 401.1, но у вас нет проблем с подключением к другим клиентам с того же компьютера, то я предполагаю, что служба ожидает чего-то в заголовках SOAP. Что это ожидает, я не могу сказать вам не по порядку; Мне нужно будет увидеть сервисный код / ​​конфигурацию.

В качестве альтернативы, это может быть просто проблема конфигурации на веб-сервере. Трудно сказать, не имея более подробной информации о конкретных средах, которые могут / не могут подключиться.

0 голосов
/ 07 мая 2010

Спасибо за ваши ответы. Они помогли в дальнейшей диагностике, почему это не работает. Оказывается, все работает, и ответ 401.1 вводит в заблуждение (но правильно). Наша проблема была связана с изменением структуры каталогов веб-сервисов. Если бы я уделял больше внимания, я мог бы поймать его, прежде чем задать этот вопрос.

Чтобы ответить на мой вопрос: да. Клиент .Net 1.1 может вызывать веб-сервис .Net 2.0, и, как правило, дополнительная настройка не требуется. Просто убедитесь, что ваш URI правильный.

0 голосов
/ 07 мая 2010

Как писал @Aaronaught, ошибка может заключаться в том, что служба ожидает чего-то в заголовках SOAP . Чтобы проанализировать это, вы можете проверить сгенерированный wsdl (разверните все файлы веб-ссылки) или загрузить метаданные через svcutil.exe . Это создаст прокси, который используется для вызова веб-службы.
Таким образом, вы имеете больше контроля над прокси.

Пример использования как использовать svcutil :

Из командной строки: SvcUtil http://service/metadataEndpoint

...