【发布时间】:2008-10-20 09:54:46
【问题描述】:
有谁知道 WCF ServiceHost 上的 UnknownMessageReceived 事件何时会被触发?
我有一些代码在其中捕获了 Faulted en UnknownMessageReceived 事件,但即使我向特定服务发布了错误消息,我也从未收到该事件。
乔辰
【问题讨论】:
-
我正在使用 net.tcp 绑定。
有谁知道 WCF ServiceHost 上的 UnknownMessageReceived 事件何时会被触发?
我有一些代码在其中捕获了 Faulted en UnknownMessageReceived 事件,但即使我向特定服务发布了错误消息,我也从未收到该事件。
乔辰
【问题讨论】:
当我错误地指定了这样的地址时,我遇到了这个事件: http://localhost:4000/SomeService//mex
注意双斜杠
服务托管在 WPF 应用程序中。因此,我还发现此事件是在与主/ui 线程不同的线程上引发的。
【讨论】:
当服务在通道上接收到消息时,通道堆栈顶部的 ChannelDispatcher 对象会查询其每个关联的 EndpointDispatcher 对象以确定哪个端点可以处理该消息。如果没有任何 EndpointDispatcher 对象可以接受该消息,WCF 运行时会在承载该服务的 ServiceHost 对象上引发 UnknownMessageReceived 事件。第 3 章,使应用程序和服务健壮”,描述了如何处理此事件。 ©(Microsoft® Windows® 通信基础一步一步由约翰夏普)。 http://download.microsoft.com/download/f/c/7/fc7d048b-b7a5-4add-be2c-baaee38091e3/9780735623361_MSWindowsCommFoundationSBS_ch13.pdf
我也试图发起这个事件 - 没有成功。在常见情况下(在客户端)我有一个错误的消息异常。
【讨论】:
董文龙(是的,我知道)有一个blog entry 可能会为您指明正确的方向。我相信文龙在 MS 的 WCF 团队。
【讨论】:
我猜(虽然不确定)这意味着您收到(返回)您的合同中未定义的消息。
【讨论】: