イベントを受信するWCFサービスを作成しています。これは合意された基準に準拠しているため、サービス定義に固執する必要があり、クライアントが送信するデータを制御しません。データは異なる場合がありますが、これも合意された基準です。
これが私のサービスの方法の1つです:
complexType ErrorEvent(int requestId, complexType returnValue, ref string errorInfo)
クライアントは、関数が操作して返すerrorInfo文字列でXMLを送信します。
私が取得するデータは次のようなものです(完全なSOAPリクエスト):
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ErrorEvent xmlns="http://blah">
<requestId>1</requestId>
<returnValue>
<returnCode>0</returnCode>
</returnValue>
<errorInfo>
<ErrorMessage>An error message</ErrorMessage>
<DefaultTask><!-- Complex data --></DefaultTask>
<Task><!-- Complex data --></Task>
<Task><!-- Complex data --></Task>
<Task><!-- Complex data --></Task>
<ExtraMessage>hello</ExtraMessage>
<ExtraMessage>world</ExtraMessage>
</errorInfo>
</ErrorEvent>
</s:Body>
</s:Envelope>
ただし、これを実行しようとすると、次のエラーが発生します(編集済み):
メッセージを逆シリアル化しようとしたときに、フォーマッターが例外をスローしました。パラメーターerrorInfoを逆シリアル化しようとしたときにエラーが発生しました。InnerExceptionメッセージは次のとおりです。'タイプSystem.Stringのオブジェクトの逆シリアル化中にエラーが発生しました。名前空間''からの終了要素'errorInfo'が必要です。名前空間''から要素'ErrorMessage'が見つかりました。
だから私の質問は、私のメソッドのシグネチャを変更せずにやりたいことを達成する方法はありますか?たとえば、サービスに属性を追加するなど?または、メッセージを傍受する必要がありますか?
ポインタをありがとう。