Я пытаюсь вызвать SOAP с помощью функции «добавить serviceReference» в Visual Studio.Метод аутентификации SOAP должен выполняться с использованием OASIS.Заголовок должен выглядеть примерно так:
<Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken 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:Username></wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">monMonDePasse</wsse:Password>
<wsse:Nonce>sdsdsdlojhfdsdM5Nw==</wsse:Nonce>
<wsu:Created>2019-01-21T6:17:34Z</wsu:Created>
</wsse:UsernameToken>
</Security>
Все классы создаются успешно без классов UsernameToken и Security, которые необходимо добавить вручную.
var UsernameToken = new UsernameToken{ Username = userName, Password = password, Nonce = nonce, Created = created };
Я добавляю Security в заголовок, используяследующий код:
Security security = new Security { UsernameToken =UsernameToken };
System.ServiceModel.Channels.MessageHeader messageHeader =
System.ServiceModel.Channels.MessageHeader.CreateHeader(name: "Security",
ns: "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-
secext-1.0.xsd", value: security, mustUnderstand: true);
Моя проблема заключается в том, что выходное пространство имен для объекта, созданного вручную, неверно.Вот сгенерированный запрос
<UsernameToken
xmlns="http://schemas.datacontract.org/2004/07/ProjectName.UnitTesting"> //This is not the correct namespace
<Created>2019-01-21T06:42:15Z</Created>
<Nonce>NzUyZg==</Nonce>
<Password>MonUserName=</Password>
<Username>MonPassword</Username>
Я хочу установить для пространства имен usernameToken значение
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
вместо
"http://schemas.datacontract.org/2004/07/ProjectName.UnitTesting"
Я пыталсядобавьте атрибут
[XmlAttribute(Namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")]
и все еще сталкиваетесь с той же проблемой.Я также сталкиваюсь с той же проблемой с атрибутом serviceContract.Спасибо,