我可以通过IIS托管“普通”basichttp服务,并通过本地网络访问它。 问题是,我正在尝试进行双工服务并在IIS中托管它。
我的网站.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:// localhost /Service/Service.svc”时收到的错误消息:
“合同要求”双工“绑定”BasicHttpBinding'不支持此功能,并且未正确配置支持。“
我用Google搜索并找到了web.config的不同设置,但都没有。 我的猜测是,web.config是错误的。
答案 0 :(得分:1)
首先,您应该有一个Service.svc指向您的服务的实现。 然后,在服务条目中,尝试在没有程序集的情况下指定全名(在Service.svc文件的Service属性中使用的名称),如果它在单独的项目中。 最后,使用合同属性的已实现服务合同的全名(此处也省略程序集)。 端点的名称不应该很重要。
答案 1 :(得分: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) 防火墙必须允许端口。
现在它正在运作。