У меня есть простой прокси-класс веб-службы C#, созданный с помощью WSDL.exe. Я вызываю метод на удаленной веб-службе, и он включает в себя кучу заголовков WS-Addressing и WS-Security, которые мне не нужны (и что сервер задыхается). Ниже приведен пример запроса сырого мыла:Удаление разделов WS-Addressing/WS-Security из запроса клиента WSE 3.0
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
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">
<soap:Header>
<wsa:Action></wsa:Action>
<wsa:MessageID>urn:uuid:22f12267-b162-4703-a451-2d1c5c5a619b</wsa:MessageID>
<wsa:To>http://example.com/wstest</wsa:To>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-5c9f0ef0-ab45-421d-a633-4c4fad26d945">
<wsu:Created>2009-04-15T16:27:25Z</wsu:Created>
<wsu:Expires>2009-04-15T16:32:25Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soap:Header>
<soap:Body>
<Func1 xmlns="http://example.com">
<arg_1 xmlns="">blah</arg_1>
<arg_2 xmlns="">blah2</arg_2></arg_2>
</Func1>
</soap:Body>
</soap:Envelope>
Но я не забочусь о том, что WS-адресации/материала WS-Security. Я не сделал ничего, чтобы включить его. По-видимому, пакет .NET WSE 3.0 добавляет их по умолчанию. Есть ли способ избавиться от них? Я не вижу никаких свойств на моем объекте прокси, которые позволяют мне удалить эти разделы. Я пробовал:
proxyObject.Addressing.Clear();
proxyObject.Security.Clear();
Это вызывает исключение для ссылки на null при вызове метода моей веб-службы.
Я хочу, чтобы запрос SOAP, чтобы выглядеть следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
</soap:Header>
<soap:Body>
<Func1 xmlns="http://example.com">
<arg_1 xmlns="">blah</arg_1>
<arg_2 xmlns="">blah2</arg_2></arg_2>
</Func1>
</soap:Body>
</soap:Envelope>
Заранее спасибо
Это может помочь: http://blogs.msdn.com/b/dhrubach/archive/2008/06/16/modifying-the-security-header-generated-by-wse-runtime.aspx –
Если вы используя WCF, тогда этот вопрос SO может помочь вам http://stackoverflow.com/questions/24635950/remove-timestamp-element-from-ws-security-headers-created-by-wcf – Ruskin