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 回答