Я борюсь с этой же проблемой и до сих пор написал инспектор сообщений , чтобы иметь возможность добраться до заголовков SOAP, хотя я не уверен, как получить wsse: security в там без необходимости делать это вручную. Я хотел бы иметь возможность использовать схему WS-Security (а также схемы SAML) для создания wsse: security stuff ...
Для чего стоит мой код инспектора сообщений ниже, если я решу это, я опубликую его в этой теме.
Вот где я добавляю поведение клиенту:
client.Endpoint.Behaviors.Add(new CustomBehavior());
msgOutput = client.ProvideAndRegisterDocumentSetXDR(msgInput);
А вот инспектор сообщений и пользовательское поведение:
public class CustomMessageInspector : System.ServiceModel.Dispatcher.IClientMessageInspector
{
public void AfterReceiveReply(ref WCF.Message reply, object correclationState)
{
}
public Object BeforeSendRequest(ref WCF.Message request, IClientChannel channel)
{
MessageHeaders headers = new MessageHeaders(MessageVersion.Soap11WSAddressing10);
MessageHeader header = MessageHeader.CreateHeader("Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "");
request.Headers.Add(header);
return null;
}
}
public class CustomBehavior : System.ServiceModel.Description.IEndpointBehavior
{
public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
{
}
public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRunTime)
{
CustomMessageInspector inspector = new CustomMessageInspector();
clientRunTime.MessageInspectors.Add(inspector);
}
public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
}
public void Validate(ServiceEndpoint endpoint)
{
}
}