2

WCFサービスには、カスタムがありますIErrorHandler。うまく機能し、エラーをログに記録することで多くの問題を修正しました。私が得ている最後のエラーはシリアル化の例外です:

Unexpected end of file. Following elements are not closed: Source, item, root.

There was an error deserializing the object of type System.Collections.Generic.List`1[[My.Web.Services.Dto.Log, My.Web.Services.Dto, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]. Unexpected end of file. Following elements are not clo

これは、クライアントからメッセージが正しく届かなかったことを示しています。それがどんなメッセージだったかを知る方法はありますか?内部からHTTPポストパラメータにアクセスできますIErrorHandlerか?

4

2 に答える 2

1

IErrorHandlerは、シリアル化が行われるチャネル スタックに応答メッセージが渡される前に呼び出されます。したがって、シリアル化で問題が発生した場合、カスタム エラー ハンドラは呼び出されません。最善の策は、トレースを使用してメッセージをログに記録し、それらを検査することです。

于 2012-07-13T22:38:55.240 に答える
0

WCF MessageInspector (IDispatchMessageInspector) を作成すると、逆シリアル化される前にメッセージにアクセスできます。リンクされた例の AfterReceiveRequest メソッドを参照してください。Ian Picknell は、より詳細な長い投稿をしています。

于 2012-07-23T11:03:55.750 に答える