Как добавить заголовок безопасности с префиксом wsse в веб-справку WSDL - PullRequest
0 голосов
/ 27 января 2020

Я импортирую WSDL в качестве веб-ссылки в свой проект C#, и мне нужно добавить заголовок, который будет выглядеть как XML ниже.

Мне нужно получить это

 <soap:Header>
    <wsse:Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
        <wsse:UsernameToken wsu:Id="UsernameToken-12" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:Username>MyUsername</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-tokenprofile-1.0#PasswordText">MyPassword</wsse:Password>
        </wsse:UsernameToken>
    </wsse:Security>
</soap:Header>

Я пытался добавить эти классы

public partial class Security : SoapHeader//, IXmlSerializable
{
        public UserNameToken UserNameToken { get; set; }
}

public partial class UserNameToken
{
        public string UserName { get; set; }
        public string Password { get; set; }
}

, затем добавил это метод к Reference.cs, но это не создает ни префикс, ни атрибуты a XML. Кто-нибудь знает, как я могу добавить префикс wsse?

protected override XmlWriter GetWriterForMessage(SoapClientMessage message, int bufferSize)
        {
            UserNameToken un = new UserNameToken(){
                UserName = "MyUsername",
                Password = "MyPassword"
            };

            Security SEC = new Security(){
                UserNameToken = un
            };
            message.Headers.Add(SEC);
            return base.GetWriterForMessage(message, bufferSize);
        }
...