. NET 3,5 до. NET 4.0 Прерывания миграции SoapHttpClientProtocol HTTPS-соединение - PullRequest
0 голосов
/ 27 марта 2020

У меня есть проект C#. NET, где я подключаюсь к сервису SOAP, используя SoapHttpClientProtocol:

        var webService = new MySoapService();
        var netCred = new NetworkCredential(userId, pass);
        var myCredentials = new CredentialCache();
        var url = "https://example/service;"
        myCredentials.Add(new Uri(url), "Basic", netCred);
        webService.Credentials = myCredentials;
        //...
        webService.generateLicenseByPartNumber(licenseInfo, out license);

Где:

     public class MySoapService: System.Web.Services.Protocols.SoapHttpClientProtocol {
     //...

        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="urn:licensedistributor", ResponseElementName="licensebypartnumberresult-struct", ResponseNamespace="urn:licensedistributor", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        [return: System.Xml.Serialization.XmlElementAttribute("time", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
        public uint generateLicenseByPartNumber([System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] licenseinfobypartnumberstruct licenseinfobypartnumber, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] out string license) {
            object[] results = this.Invoke("generateLicenseByPartNumber", new object[] { licenseinfobypartnumber});
            license = ((string)(results[1]));
            return ((uint)(results[0]));
        }
    }

Это прекрасно работает ... пока я не обновлю проект с. NET 3.5 до. NET 4.0. После 4.0 он просто вызывает System. Net .WebException: Запрос не выполнен с пустым ответом.

Каждая topi c, которую я могу найти об этом исключении, говорит, что он должен делать с вызовом службы HTTPS как HTTP ... но, как вы можете видеть выше, мой URL уже HTTPS (и не был изменен). Я не могу найти никаких ссылок о том, почему. NET 4.0 может сломать это, в том числе в руководствах по миграции MS.

Любые идеи о том, что Microsoft "тихо" изменилась между NET 3.5 и 4.0, которые могут сломать это код будет принята с благодарностью.

...