簡體   English   中英

使用ninject.extension.wcf selfhost在同一baseAddress上提供多種服務

[英]Multiple services on same baseAddress using ninject.extension.wcf selfhost

使用github中的示例,在Windows服務中設置一個簡單的wcf服務可以正常工作。 但是,當我添加另一個servicecontract實現時,無法將其托管在同一baseAddress下,即來自app.config:

<service name="ContractService" behaviorConfiguration="WebServicesBehavior">
  <host>
    <baseAddresses >
      <add baseAddress="baseUri"/>
    </baseAddresses>
  </host>
  <endpoint address="addr1" binding="wsHttpBinding" contract="IContract1"/>
  <endpoint address="addr2" binding="wsHttpBinding" contract="IContract2"/>
  <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"  />
</service>

使用此示例,我能夠托管2個服務,但是我希望實現在同一baseAddress和可能的多個端點內托管多個服務協定,但是我對解決方案的搜索使我陷入困境。

此設置有效:

<services>
  <service name="ContractService1" behaviorConfiguration="WebServicesBehavior">
    <host>
      <baseAddresses >
        <add baseAddress="http://localhost:8082/Services/"/>
      </baseAddresses>
    </host>
    <endpoint address="addr1" binding="wsHttpBinding" contract="IContract1"/>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"  />
  </service>
  <service name="ContractService2" behaviorConfiguration="WebServicesBehavior">
    <host>
      <baseAddresses >
        <add baseAddress="http://localhost:8083/Services/"/>
      </baseAddresses>
    </host>
    <endpoint address="addr2" binding="wsHttpBinding" contract="IContract2"/>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"  />
  </service>
</services>

使用ninject進行的聯結與github示例中的相同。

有沒有辦法使用帶有ninject的selfhost wcf來實現多個端點?

通過為同一端口指定不同的baseAddresses,可以在同一端口上具有多個服務。

將端點定義的地址附加到每個服務的基地址,如下所示:

<add baseAddress="http://localhost:8083/Services/addr1"/>

<endpoint address="" binding="wsHttpBinding" contract="IContract1"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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