.Net 3.5 WebService не может быть вызвано .Net 1.1 Windows App - PullRequest
4 голосов
/ 07 ноября 2008

У меня странная проблема. У меня был веб-сервис, который был скомпилирован в рамках 2.0, который использовался приложением Windows, которое было скомпилировано в рамках 1.1. Это работало просто отлично. Теперь после обновления веб-службы до платформы 3.5 приложение Windows больше не может вызывать его.

Создание небольшого приложения для Windows в 3.5 в качестве теста может без проблем вызвать веб-сервис, поэтому я знаю, что оно все еще работает.

В коде вообще ничего не изменилось, он просто скомпилирован как проект 3.5 вместо проекта 2.0.

Для тех, кому все равно, какую ошибку я получу, вот это:

Необработанное исключение типа «System.Net.WebException» произошло в system.web.services.dll

Дополнительная информация: базовое соединение было закрыто: An неожиданная ошибка произошла на получить.

Могу ли я что-нибудь сделать с веб-сервисом, чтобы сделать его обратно совместимым (если это даже проблема)?

[Изменить] Ответы на ответы ниже (пока): повторное обнаружение не сработало, равно как и удаление и повторное добавление веб-службы. Я не верю, что это проблема SOAP, потому что WSDL идентичны (оба показывают SOAP 1.2). Просмотр веб-службы с сервера работает нормально.

Ответы [ 6 ]

1 голос
/ 08 ноября 2008

Это может быть проблема с KeepAlives (например, через прокси). В качестве теста добавьте приведенный ниже код в сгенерированный Reference.cs на клиенте (некрасиво - да). Я видел проблему при использовании Fiddler (который является прокси-сервером) для проверки связи между клиентом и сервером.

    // Put this override in the generated Reference.cs of the client proxy
    protected override System.Net.WebRequest GetWebRequest(Uri uri)
    {
        HttpWebRequest webRequest = (HttpWebRequest)base.GetWebRequest(uri);

        webRequest.KeepAlive = false;
        webRequest.ProtocolVersion = HttpVersion.Version10;
        return webRequest;
    }
1 голос
/ 07 ноября 2008

Это может быть SOAP 1.0 против SOAP 1.1. Сервис 3.5, вероятно, использует 1.1 или 1.2 по умолчанию, который, я думаю, можно настроить в привязках web.config.

1 голос
/ 07 ноября 2008

Попробуйте «заново открыть» веб-сервис в .NET 1.1 (возможно, просто в тестовом приложении) и посмотрите, сохраняется ли проблема.

0 голосов
/ 18 января 2010

Я столкнулся с этим и решил, заставив доменные кредиты на сервис.

[веб-сервис] .Credentials = System.Net.CredentialCache.DefaultCredentials;

OR

[веб-сервис] .Credentials = новый System.Net.NetworkCredential ([пользователь], [pwd], [домен]);

0 голосов
/ 07 ноября 2008

Как дополнительная проверка работоспособности, может ли веб-служба 3.5 успешно вызываться soapUI ?

0 голосов
/ 07 ноября 2008

Можете ли вы зайти в веб-сервис прямо на установку IIS? Если нет, проверьте конфигурацию приложения в IIS. Вы должны переключить версию ASP.NET.

...