C#. Net 4.6 SoapContext Удалить адресацию - PullRequest
0 голосов
/ 20 июня 2020

Я бью головой последние несколько дней, так как не мог придумать ответ. У меня проблема с использованием веб-сервиса с помощью WSSE. Я использую. NET 4.6 и WebService2. (Я знаю, что. NET больше не поддерживает WSE, но я пытаюсь исправить старое приложение)

Из того, что я уже собрал, я создал веб-ссылку на веб-сервис, который мне нужно использовать . Затем я изменил унаследованный класс с System.Web.Services.Protocols.SoapHttpClientProtocol на Microsoft.Web.Services2.WebServicesClientProtocol, чтобы получить доступ к SoapContext.

Затем я добавил токен имени пользователя в SoapContext Security и попробовал для вызова метода из веб-службы. Когда я это делаю, я получаю сообщение об ошибке: «Элемент не должен содержать пустой дочерний текстовый узел».

В SoapUI я вижу, что добавлена ​​адресация. Я бы хотел либо добавить что-то в узел «Действие», либо полностью удалить адресную часть из сообщения Soap. Как мне go это сделать? Могу ли я изменить (переопределить) сообщение soap при его отправке или отключить, чтобы адресация не отправлялась.

SomeService ms = new SomeService()
ms.Url = EndpointUrl;

// IF this is not included WSSE fails            
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

var token = new UsernameToken(username, password, PasswordOption.SendHashed);
SoapContext requestContext = ms.RequestSoapContext;
requestContext.Security.Timestamp.TtlInSeconds = 60;
requestContext.Security.Tokens.Add(token);

try
{
var output = ms.SomeMethod(SomeInput);
}
Catch(Exception ex)
{
// Here I get the Action error
}

Любая помощь будет принята с благодарностью

спасибо

...