![](/img/trans.png)
[英]WCF Web.config Error : “This collection already contains an address with scheme http”
[英]Getting Error “This collection already contains an address with scheme http” with WCF on local machine
我第一次嘗試WCF並在嘗試實例化主機時收到以下錯誤:
此集合已包含帶有方案http的地址...
我已經找到了很多其他的參考資料,並嘗試了一些解決方案無濟於事。 一個相當常見的線程不適用於我,問題出在某種Web服務器上。 我只是在本地機器上運行所有東西。
我發現一個有趣的症狀是我正在開發ac#Forms應用程序。 最初我的頂級表單對象繼承了我的服務接口而不是單獨的Service類。 當我以這種方式實現時,主機端沒有錯誤,但我在客戶端遇到了麻煩。
基於此解決方案: 如何解決“ChannelDispatcher無法打開其IChannelListener”錯誤?
...我決定將服務主機分成一個單獨的對象。 那是我開始看到問題的時候。
ServiceContract很簡單:
[ServiceContract]
public interface ISSAService
{
[OperationContract]
void CreateSpaMonitor();
}
我像這樣實例化服務:
Uri baseAddr = new Uri("http://localhost:8000/SSAService");
ServiceHost localHost = new ServiceHost(typeof(SSAService), baseAddr);
其中SSAService是Service接口的實現。
如果我將第二行更改為以下(並實現接口...),則錯誤消失:
Uri baseAddr = new Uri("http://localhost:8000/SSAService");
ServiceHost localHost = new ServiceHost(typeof(SSAManager), baseAddr);
哪里SSAManager是我的頂級Forms類...
然后我遇到了客戶端問題,這是我開始的地方....
我試過更改端口號,但似乎沒有任何影響。
我是WCF的新手,所以也許我錯過了一些明顯的東西。
謝謝。
我收到了這個錯誤:
此集合已包含方案https的地址。 此集合中每個方案最多只能有一個地址。 如果您的服務是在IIS中托管的,則可以通過將'system.serviceModel / serviceHostingEnvironment / multipleSiteBindingsEnabled'設置為true或指定'system.serviceModel / serviceHostingEnvironment / baseAddressPrefixFilters'來解決問題。 參數名稱:item
我通過對web.config執行以下操作來解決它。 可能在.NET Framework 4中發生了一些變化,這需要這一行,因為我以前不需要它:
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<!-- Rest of the system.serviceModel content omitted for brevity--->
<system.serviceModel>
我之前發現的解決方案之一是添加如下內容:
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://localhost:8000"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
然后絕對指定端點地址。 這似乎沒有效果,但我仍然在構造函數中使用baseAddr,如上所示。
我的解決方案是從構造函數中刪除baseAddr。
如果在具有不同域名/端口的同一IIS站點上有多個綁定,也會發生這種情況。 我通過刪除額外的命名綁定來解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.