2010-04-12 81 views
1

我的應用必須安裝在我的客戶端的Web服務器上。有些客戶想使用SSL,有些客戶則不使用。我的應用程序有一個WCF服務,我目前必須進入每個安裝的web.config,並根據客戶端的SSL情況將安全模式從<security mode="Transport">切換到<security mode="TransportCredentialOnly">。我可以在運行時設置客戶端綁定。但是,我想知道是否有辦法在運行時(在服務器端)設置服務綁定。WCF在運行時在服務上設置綁定

回答

1

是的,絕對!這取決於你如何託管你的WCF服務。說它必須安裝在網絡服務器上,我會假設你在IIS中託管。

在這種情況下,您需要創建自己的ServiceHostFactory後代 - 這真的沒什麼大不了的。

需要您的CustomServiceHostFactory才能將您的ServiceHost實例返回到IIS,並根據您的需要正確配置。

在自定義工廠的CreateServiceHost方法中,您基本上設置了您的ServiceHost並配置了它的所有端點,行爲,綁定等等 - 所有代碼都在您的完全控制之下。您可以根據需要做任何事情,根據需要配置您的服務。

爲了承載您的服務。你需要適應MyService.svc文件包括CustomServiceHostFactory作爲工廠使用:

<% @ ServiceHost Language="C#" Service="YourService" 
       Factory="CustomServiceHostFactory" %> 

,這就是它!

檢查MSDN上了Extending Hosting Using ServiceHostFactory更多細節,看看在CodeProject上A Custom ServiceHostFactory文章的樣本。