Uderzam w usługę WCF przy użyciu pliku WSDL, do którego nie mam dostępu i którego nie można zmodyfikować. Dla jednego z wniosków zdalny serwis jest umierających ponieważ jesteśmy wysyłania:Węzeł czynności musi zostać usunięty z żądania mydła WCF za pomocą IClientMessageInspector
<Action s:mustUnderstand="1"....>
Po poszukiwanej obszernie nie mogę znaleźć proste rozwiązanie mojego problemu. Więc w typowym komunikatem:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none" />
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<retrieveBooking xmlns="http://services.rccl.com/Interfaces/RetrieveBooking">
<OTA_ReadRQ TransactionActionCode="RetrievePrice" SequenceNmbr="1" Version="1" xmlns="http://www.opentravel.org/OTA/2003/05/alpha">
Pomyślałem mogę usunąć ten węzeł jako część wiadomości inspektora:
internal class MyMessageInspector : IClientMessageInspector
{
public object BeforeSendRequest(ref Message aRequest, IClientChannel aChannel)
{
//Get rid of mustUnderstand Action node
foreach (MessageHeaderInfo headerInfo in aRequest.Headers.UnderstoodHeaders)
{
aRequest.Headers.UnderstoodHeaders.Remove(headerInfo);
}
return null;
}
}
jednak chociaż aRequest.Headers.UnderstoodHeaders jest pusty po tym, jak usunąć wszystkie elementy, wciąż widzę węzeł Akcji emitowany w XML.
- Co muszę zrobić, aby to zadziałało?
- Jak mogę dostać w treści wiadomości tak, że mogę sprawdzić nazwę pierwszego węzła znacznika body retrieveBooking w tym przypadku? (Muszę tylko wykonać to dla konkretnej wiadomości, nie wszystkie z nich)