Я импортирую 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);
}