2012-08-22 214 views
0

我可以託管IIS的「正常」basichttp服務並通過本地網絡訪問它。 問題是,我試圖做一個雙工服務,並在IIS中託管它。在IIS中託管wcf雙工服務

我的web.config:

<system.serviceModel> 
<services> 
    <service behaviorConfiguration="BaseBehavior" name="RegistrationService"> 
    <endpoint binding="wsDualHttpBinding" bindingConfiguration="wsDualHttpBind" name="RegistrationService" contract="Service" /> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="BaseBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<bindings> 
    <wsDualHttpBinding> 
    <binding name="wsDualHttpBind" sendTimeout="00:01:00"> 
     <security mode="None"> 
     <message clientCredentialType="None" /> 
     </security> 
    </binding> 
    </wsDualHttpBinding> 
</bindings> 
</system.serviceModel> 
<system.webServer> 
<modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer> 
</configuration> 

錯誤消息我得到當我打開的 「http://本地主機/Service/Service.svc」:

「合同要求 「雙面」 結合「basicHttpBinding的「不支持此功能,並且支持配置不正確。」

我用Google搜索,發現不同的設置web.config中,但沒有奏效。 我的猜測是,在web.config是錯誤的。

回答

0

謝謝您的快速回復。我的配置是完全錯誤的^^

看完這篇文章:

http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,b891610a-6b78-4b54-b9a6-4ec81c82b7c0.aspx

我從wsDualHttpBinding改變的net.tcp。

我的新web.config文件看起來是這樣的:

<system.serviceModel> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name="MyBehaviour"> 
     <serviceMetadata /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
<service name="Service" behaviorConfiguration="MyBehaviour"> 
    <endpoint address="" 
      binding="netTcpBinding" 
      bindingConfiguration="InsecureTcp" 
      contract="IService" /> 
    <endpoint address="mextcp" binding="mexTcpBinding" contract="IMetadataExchange"/> 
</service> 
</services> 
<bindings> 
    <netTcpBinding> 
    <binding name="InsecureTcp" portSharingEnabled="true"> 
     <security mode="None" /> 
    </binding> 
    </netTcpBinding> 
</bindings> 

和IIS我添加的net.tcp網站。 (http,net.tpc) 並且防火牆必須允許這些端口。

現在工作。

1

首先,你應該有一個Service.svc指向你的服務的實現。 然後,在服務條目中,如果沒有程序集,請嘗試指定完整名稱(您在Service.svc文件的Service屬性中使用的名稱),如果它位於單獨的項目中。 最後,使用合同屬性的實施服務合同的全名(此處省略彙編)。 端點的名稱不應該很重要。