我正在尝试使用配置文件来定义端点和服务信息。我有一个非常简单的代码,包含OneWay服务和双工服务。当我没有尝试更改配置文件时,OneWay工作。
现在,我想使用配置文件来定义两个服务。
Service1合同名称为IOneWayService
,Service2合同名称为ICallBackService
。
两者都在其具体的相应类名OneWayService.svc.cs
和CallBackService.svc.cs
中实现了代码。
此时的配置文件如下所示:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
<serviceActivations>
<add relativeAddress="OneWayService.svc" service="TestingWcf.OneWayService"/>
<add relativeAddress="CallBackService.svc" service="TestingWcf.CallBackService"/>
</serviceActivations>
</serviceHostingEnvironment>
<services>
<service name="TestingWcf.OneWayService">
<endpoint address="http://localhost:60847/One"
binding="wsHttpBinding"
contract="IOneWayService" />
</service>
<service name="TestingWcf.CallBackService">
<endpoint address="http://localhost:60847/Two"
binding="wsHttpBinding"
contract="IDuplexService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
尝试通过此网址执行OneWayService时,我始终遇到此错误:http://localhost:60847/OneWayService.svc
合约名称'IOneWayService' 无法在列表中找到 服务实施的合同 'OneWayService'。
有人知道为什么吗?
我已从multipleSiteBindingsEnabled= true
标记中删除了servinceHostingEnvironment
,并在合同中添加了命名空间,我可以使用OneWayService。
此外,双工无法绑定到wsHttpBinding
。我不得不将其更改为NetTcpBinding
。但是,我在Duplex中遇到了另一个错误:
配置绑定扩展 'system.serviceModel /绑定/ NetTcpBinding的' 无法找到。验证这一点 绑定扩展是正确的 在。注册 system.serviceModel /扩展/ bindingExtensions 并且它拼写正确。
从这一刻起,我又迷失了。
我在绑定名称中输入了一个错误。我有一个NetTcpBinding的大写字母,它需要一个小写:netTcpBinding
。但是,它仍然没有用,现在我有:
协议'net.tcp'不是 支持的。 &GT;。&LT; !!!
答案 0 :(得分:1)
好的,这解释了它 - 默认情况下Visual Studio使用内置的Cassini Web服务器(除非您已经切换到使用IIS Express) - 并且该服务器除了普通的http之外不支持任何内容。 / p>
Cassini不支持net.tcp等等。
您需要开始使用单独的IIS虚拟目录,并首先启用所有必要的支持内容(在“添加/删除Windows功能”对话框中)