Я новичок в WCF, я должен использовать пару методов службы WCF, сообщение с запросом ниже:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://xx.xxxx.xxxx.xxxxxxxxxx.xxx">
<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-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">
<wsse:Username>myUserName</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">myPassword</wsse:Password>
<wsu:Created>2020-04-22T12:24:08.639Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<ws:myMethod>
<ws:arg0>
<ws:user>myUserName</ws:user>
<ws:appId>myAppId</ws:appId>
<ws:iddoc>myIdDoc</ws:iddoc>
</ws:arg0>
</ws:myMethod>
</soapenv:Body>
</soapenv:Envelope>
Я не знаю, как получить такое сообщение программно, в настоящее время Я добавил сервисную ссылку в проект и добавил несколько строк:
var remoteAddress = new System.ServiceModel.EndpointAddress("myEndpoint");
var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);
client = new Service.myClient(binding, remoteAddress);
client.ClientCredentials.UserName.UserName = "myUsernName";
client.ClientCredentials.UserName.Password = "myPassword";
Service.MyMethodRequest r = new Service.MyMethodRequest() { u = "myUsername", Id = "myAppId", idd = "myIdDoc" };
var tmp = client.MyMethod(r);
Это сообщение вывода запроса, которое я могу получить с помощью Wireshark:
<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<myMethod
xmlns="http://xx.xxxx.xxxx.xxxxxxxxxx.xxx">
<arg0>
<u>myUsername</u>
<aId>myAppId</Id>
<idd>myidDoc</idd>
</arg0>
</myMethod>
</s:Body>
</s:Envelope>
, конечно, я получить эту ошибку обратно с сервера:
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode
xmlns:ns1="http://ws.apache.org/wss4j">
ns1:SecurityError
</faultcode>
<faultstring>
A security error was encountered when verifying the message
</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Большое спасибо! Хорошего дня!