2010-10-18 83 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