幾天前我遇到了這個問題。事實上,我和Ryu最初在他的問題中所描述的情況一樣。我們有許多客戶的虛擬目錄,但他們每個人都有自己的綁定。像「http://company1.product.com」,「http://company2.product.com」等
解決方案描述here的作品。但是什麼是價格!每當我們需要添加新的綁定時,我們應該改變web.config。也是網絡。config應包含絕對路徑前綴 ,如<add prefix=」http://company1.product.com」/>
。
可以繞過第一個問題。我爲WCF服務編寫了我自己的CustomHostFactory,我在那裏動態添加端點。我從IIS綁定中檢索這個端點(有一種方法可以從IIS獲取信息)。
下面是示例代碼:和
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
var serviceHost = base.CreateServiceHost(serviceType, baseAddresses);
var webHttpBinding = new WebHttpBinding();
var serviceEndpoint1 = serviceHost.AddServiceEndpoint(typeof(IService), webHttpBinding,
"http://company2.product.com/WCFService/Service.svc");
var serviceEndpoint2 = serviceHost.AddServiceEndpoint(typeof(IService), webHttpBinding,
"http://company1.product.com/WCFService/Service.svc");
var webHttpBehavior = new WebHttpBehavior();
serviceEndpoint1.Behaviors.Add(webHttpBehavior);
serviceEndpoint2.Behaviors.Add(webHttpBehavior);
return serviceHost;
}
,而不是硬編碼端點的網址,您從前人的精力IIS檢索。 但是應用程序啓動時會創建一次ServiceHost。所以如果你需要添加新的綁定,你應該重新啓動IIS。這不是我們的解決方案。
這就是爲什麼我們決定轉移到asmx(如描述here)。 並等到Framework 4.0發佈,其中應支持多個綁定。
你是否用IIS託管你的WCF或者你在建立一個自定義託管服務提供者? – thaBadDawg 2009-01-07 22:33:16
另外,您有什麼具體問題/問題?即該服務不起作用,返回不正確的響應(URL),還是服務不知道哪個客戶端正在進行呼叫? – 2009-01-07 22:51:02
我與IIS託管 – Ryu 2009-01-09 22:34:25