Я создал службу po c WCF и могу вызвать эту службу, используя SOAP UI или Postman. Но для некоторых проектных работ мне нужно проанализировать приведенный ниже soap заголовок безопасности
SOAP Заголовок
<soapenv:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:UsernameToken wsu:Id="UsernameToken-5351BA8068B753C930158868612679914"><wsse:Username>test user</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">CS++k5OEqKsJByVPPmUqcBkAeoQ=</wsse:Password><wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">VK+Ilb/zy80lFbfHAAQupg==</wsse:Nonce><wsu:Created>2020-05-05T13:42:06.798Z</wsu:Created></wsse:UsernameToken></wsse:Security></soapenv:Header>
файл startup.cs выглядит следующим образом
public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddScoped<ITestService, TestService>(); services.AddSoapServiceOperationTuner(new ServiceOperationTuner()); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { var binding = new BasicHttpBinding(); binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Digest; app.UseSoapEndpoint<ITestService>("/Service.svc", binding, SoapSerializer.DataContractSerializer); } }
Класс ServiceOperationTuner.cs содержит код для получения объекта HttpContext, как показано ниже. Здесь метод Tune будет вызываться для любого запроса к службе WCF
public void Tune(HttpContext httpContext, object serviceInstance, OperationDescription operation) { }
объект httpContext содержит все детали заголовка, но не заголовок soapenv:
Может ли кто-нибудь помочь мне разобрать этот soapenv : Заголовок запроса в. Net core? Заранее спасибо