У меня проблема, над которой я работал в течение 2 дней, и я не знаю, что делать дальше, надеюсь, кто-нибудь может помочь. Я делаю запрос в службу SOAP, и должен получить типичный ответ SOAP xml. Я использую SOAP UI для тестирования конечной точки, а в SOAP UI все работает нормально, я получаю ответ SOAP со всеми данными. Я добавил в свой проект ссылку на подключенную службу и импортировал файл WSDL, чтобы создать все классы, которые мне понадобятся.
Когда я делаю это программно в C#, я получаю следующую ошибку: «Длина блока не соответствует совпадать с его дополнением ". Это странно, потому что получаемый мной ответ не должен быть сжатым. Я не получаю файл gzip или что-то еще, просто обычный ответ SOAP XML. Это не проблема с сертификатом (он отлично загружается). Я даже подтвердил компании, которая управляет службой, что они получают и регистрируют мой запрос. Проблема в том, когда я получаю ответ. Я пишу этот код в библиотеке классов. Net Standard 2.0. Я даже попытался добавить в запрос заголовок идентификатора Content-Encoding. Ничего не работает.
var client = new ServiceInterfaceClient();
var request = new EbMtvnSvcReq();
var r = new SendMessageResponse();
using (new OperationContextScope(client.InnerChannel))
{
HttpRequestMessageProperty requestMessage = new HttpRequestMessageProperty();
requestMessage.Headers["Content-Encoding"] = "identity";
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name]
= requestMessage;
r = client.SendMessageAsync(request).GetAwaiter().GetResult();
}
return r;
Я предполагаю, что это как-то связано с тем, что для параметра DecompressionEnabled не установлено значение false. Это было свойством HttpsTransportBindingElement, но я думаю, что они взяли его. Net Core, поэтому я понятия не имею, как его установить, и поиск в Google не принес много пользы.