2011-05-27 27 views
4

我想在多個tcp.net綁定的IIS 7.5下建立一個網站。WCF:在TCP.NET上的多個綁定

由於服務是負載均衡器的後面,我需要的服務的多個端點:

log.o1881.no/log/service.svc

log.core1.o1881.no/log/service。 SVC

此作品爲HTTP綁定當我配置在web.config中:

<system.serviceModel> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
</system.serviceModel> 

以下錯誤消息時出現下列tcp.net綁定ADDE d的網站:

808:在 '/日誌' 應用log.core1.o1881.no

服務器錯誤:log.o1881.no

808。

這個集合已經包含一個net.tcp方案的地址。此集合中每個方案最多可以有一個地址。如果您的服務在IIS中託管,您可以通過將'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled'設置爲true或指定'system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters'來解決此問題。 參數名稱:項目

我也試過把它添加到web.config中:

<serviceHostingEnvironment multipleSiteBindingsEnabled="true"> 
    <baseAddressPrefixFilters> 
    <add prefix="net.tcp://log.o1881.no:808/log" /> 
    <add prefix="net.tcp://log.core1.o1881.no:808/log" /> 
    </baseAddressPrefixFilters> 
</serviceHostingEnvironment> 

但這卻無法正常工作。

由於該服務將部署在多個服務器上,我非常希望能夠通過配置和IIS設置而不是代碼來完成此項工作。

這是可能的,還是有另一種方法來處理這種情況(由於負載平衡,http和net.tcp上的多個綁定名稱)?

+0

我一直在嘗試同樣的事情過了一天,現在沒有任何成功。確實有很多關於如何爲http執行操作的討論,但不是針對net.tcp。我開始懷疑這是不可能的。 (CFR)。這篇文章[鏈接](http://blogs.msdn.com/b/rampo/archive/2008/02/11/11/how-can-wcf-support-multiple-iis-binding-specified-per-site.aspx) _「多站點綁定僅支持Http協議」_ – Stif 2012-02-21 08:50:56

+0

這是可能的,但您必須注意您的配置和nut * over * configure。 – ktingle 2013-03-29 12:08:06

回答

1

根據documentation使用multipleSiteBinddingsEnabled告訴WCF忽略任何<baseAddressPrefixFilters>

「當使用此設置啓用多個站點綁定時,對於HTTP和非HTTP協議,任何baseAddressPrefixFilters設置都將被忽略。」

所以這個配置自相矛盾,您指定的地址前綴和指示同時WCF忽略它們,因爲你是有multipleSiteBindingsEnabled指定

<serviceHostingEnvironment multipleSiteBindingsEnabled="true"> 
    <baseAddressPrefixFilters> 
    <add prefix="net.tcp://log.o1881.no:808/log" /> 
    <add prefix="net.tcp://log.core1.o1881.no:808/log" /> 
    </baseAddressPrefixFilters> 
</serviceHostingEnvironment> 

我覺得multipleSiteBindingsEnabled是最適合你只使用HTTP方案感興趣,其中的場景。

否則不要使用它,實際上在同一個IIS站點/應用程序層次結構的不同端口上有多個tcp.net綁定。

<serviceHostingEnvironment> 
    <baseAddressPrefixFilters> 
    <add prefix="net.tcp://log.o1881.no:808/log" /> 
    <add prefix="net.tcp://log.core1.o1881.no:808/log" /> 
    </baseAddressPrefixFilters> 
</serviceHostingEnvironment> 

希望這會幫助別人:)