2009-08-06 85 views
0

我有一個WCF服務,我想根據配置的EndpointAddresses爲服務實現的幾個不同的合同執行一些初始化類型的操作。找到沒有OperationContext.Current的服務實現的端點地址

該服務可以(並且)由幾個不同的服務主機託管。有一個控制檯應用程序創建一個服務主機,一個創建服務主機的Windows服務,它駐留在IIS主機中,我也非常希望能夠使用Visual Studio服務主機進行調試。

有沒有什麼辦法可以獲得對ServiceHostBase的引用,該引用創建了服務的實例而不在服務操作中?或者,也許更好的(閱讀:更復雜的)方式來確定服務的服務端點是什麼?

回答

1

讓我看看我是否有這樣的直觀:您有一個Service實現從多個ServiceHosts公開,並且您想爲每個服務主機執行一些不同的初始化?還是每個端點都暴露?

這聽起來像這裏有幾個選項,但它取決於你想要做什麼。如果初始化是每臺主機,那麼爲什麼不使用自己的ServiceHost實現並在那裏進行初始化而不是服務?

我特別要求這一點,因爲從描述中不清楚你的服務的實例模式是什麼,或者當你想運行初始化代碼本身。

如果無論出於何種原因你不能這樣做,另一個值得探索的選擇可能是在ApplyDispatchBehavior()期間在自定義IServiceBehavior中進行初始化,在那裏你可以訪問服務主機和服務描述。

+0

它在單實例模式下運行。我一直試圖避免使用自定義的ServiceHost,因爲我們喜歡使用WCF服務宿主應用程序進行測試,並且不知道如何使用自定義的ServiceHost類。 我正在研究如何在ApplyDispatchBehavior()內完成它,但我還沒有圍繞它來包裹頭部。 – MojoFilter 2009-08-07 12:07:10

+0

聖牛,真的那麼簡單。我猜是什麼讓我失望,是因爲某種原因,我的大腦破碎得出結論,我無法將其他ServiceBehavior添加到已經定義的ServiceBehavior中。 – MojoFilter 2009-08-07 12:29:14