我有一個WCF服務從BizTalk服務器接收消息。服務期望tempuri.org的名稱空間
該真實由BT服務器處理該消息被簡單地從FTP文件夾拾取並送過來的操作在其上定義如下的服務:
[OperationContract(Action="http://www.mysite.com/ConvertAA",
Name="AA", IsOneWay=false)]
void SaveDataFromAA(AA receivedDoc);
然而當這個消息到達時,我收到一條消息:
反序列化操作「AA」的請求消息體的錯誤。 OperationFormatter遇到無效的消息體。預期會找到名稱爲「AA」且名稱空間爲「http://tempuri.org/」的節點類型「元素」。發現節點類型「元素」名爲「AA」和命名空間'
現在,這是因爲由第三方(我有過這個沒有控制)發送的XML看起來是這樣的:
<?xml version="1.0" standalone="yes"?>
<AA>
<AAData>...</AAData>
</AA>
我有他們的架構已經在我的項目中,當我嘗試調用SaveDataFromAA時,我得到上述錯誤。
我試過在我的服務合同上使用一個空白命名空間,但仍然在尋找tempuri.org - 我沒有對它們的xml的控制,所以有辦法我可以攔截它,修改它並相應地處理它?我很樂意包裝它,但我不太確定從哪裏開始。
我敢肯定這是與DataContract不是OperationContract的一個問題。操作合同定義了服務中操作的身份,在這種情況下,您的SaveDataFromAA在您的服務中稱爲操作AA。它不會改變你的AA對象(receivedDoc) – AgustinCoder