2010-10-18 85 views
0

通信对象ExtendingWCFwithServiceHost.clsMyOwnHost重写了虚函数OnOpening,但它不调用基类中定义的版本。帮助覆盖WCF中的ServiceHost

我在覆盖ServiceHost类的OnOpening方法时出现此错误。

希望有任何帮助。

谢谢。

+0

只需在您的方法中添加一个对'base.OnOpening(....)'的调用 - 或者我在这里丢失了什么?你能告诉我们你的代码吗? – 2010-10-18 12:57:47

+0

是啊,那就是我曾经错过的 – Josh 2010-10-18 13:40:42

回答

2

错误消息说明了这个问题 - 您覆盖了OnOpening方法,但未调用基本实现。您的覆盖应该是这样的:

protected override OnOpening() 
{ 
    //additional processing 
    base.OnOpening(); 
} 

This page解释ICommunicationObject状态机,并说:

虽然 System.ServiceModel.Channels.CommunicationObject.OnOpen(System.TimeSpan), System.ServiceModel .Channels.CommunicationObject.OnClose(System.TimeSpan), 和 System.ServiceModel.Channels.CommunicationObject.OnAbort 没有默认实现,其他回调确实有广告默认 实现,这对于 状态机的正确性是必需的。如果你用 覆盖那些方法,一定要调用 的基本实现或者正确的 来代替它。

+0

宾果!谢谢!! – Josh 2010-10-18 13:40:09