Ошибка $ Meta - Windows Соединение приложения с ASP. NET Соединением веб-службы SOAP / WSDL - PullRequest
0 голосов
/ 26 апреля 2020

Мы переместили наше приложение .asmx веб-службы на другой сервер. Так что ничего не изменилось, кроме веб-адреса. Мы можем получить доступ к новым веб-службам и WSDL через браузер, а также использовать этот способ. Мы успешно удалили и добавили новую веб-ссылку в проект.

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

Ошибка: базовое соединение было закрыто: при отправке произошла непредвиденная ошибка

В журнале IIS «Ошибка $ META» со статусом 500

2020-04-25 00:10:16 W3SVC4 GET /MyWebService.asmx/$metadata - 443 - 10.6.0.10 HTTP / 1.1 Mozilla / 4.0 + (совместимо; + MSIE + 6.0; + MS + Веб + Сервисы + Клиент + Протокол + 4.0.30319.42000) - api.mydomain.com 500 0 0 590 222 15

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

Кто-нибудь сталкивался с этим, у меня закончились поиски в Google.

1 Ответ

0 голосов
/ 30 апреля 2020

Это было решено в 2 случаях, но по-разному.

Root проблемы. Когда клиент. net подключается к приложению веб-службы END POINT с помощью (веб-метод) и / или webserver.asmx. Если ваш межсетевой экран, сервер или azure шлюз приложений ограничивают TLS 1.2 в стиле SSL или выше, даже если net framework 4.0 и выше предполагает использование TLS 1.2 по умолчанию, когда вы используете его в качестве целевой платформы, это НЕ в наших. net приложениях и настольных windows приложениях, созданных с помощью. NET все время.

Чтобы обойти эту проблему, вы должны объявить ее специально в любом файле app.config, web .config или напишите код, который устанавливает TLS12 для созданного вами объекта веб-клиента. В одном случае указание в app.config было недостаточным, разработчик должен был объявить его на каждом объектном веб-клиенте, созданном до вызова веб-службы.

Если ваш параметр для использования в веб-приложении:

Вы можете добавить либо в web.config, либо в global.asa.cs (C#) Application_Start ( ).

В Windows настольном приложении:

Разработчик должен был объявить каждый раз перед созданием веб-клиента в вашем методе. Глобальный параметр не работает.

Система. Net .ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Вот несколько ссылок, которые помогут вам .. Я надеюсь, это помогает другим, так как это соединение было закрыто, ошибку трудно отладить.

ServicePointManager.SecurityProtocol

...