簡體   English   中英

獲取錯誤“此集合已包含帶有方案http的地址”,本地計算機上有WCF

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM