WCF .svc 有效,但配置文件无效

本文关键字:配置文件 无效 svc 有效 WCF | 更新日期: 2023-09-27 17:57:16

我正在尝试使用配置文件来定义端点和服务信息。我有一个非常简单的代码,其中包含单向服务和双工服务。当我没有尝试更改配置文件时,OneWay 工作了。

现在,我想使用配置文件来定义这两个服务。

服务1协定名称为IOneWayService,服务2协定名称为ICallBackService

两者都在其各自的具体类名 OneWayService.svc.csCallBackService.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" 在列表中找不到 服务实施的合同 "单向服务"。

有人知道为什么吗?

编辑

我已经从 servinceHostingEnvironment 标签中删除了multipleSiteBindingsEnabled= true,并在合同中添加了命名空间,我可以运行 OneWayService。

此外,双工不能绑定到wsHttpBinding。我不得不将其更改为NetTcpBinding.但是,我在双工中遇到了另一个错误:

配置绑定扩展 'system.serviceModel/bindings/NetTcpBinding' 找不到。验证此 绑定扩展正确 注册于 system.serviceModel/extensions/bindingExtensions 并且拼写正确。

从此,我又迷失了。

编辑 2

我在绑定名称中出错。我有一个大写字母用于NetTcpBinding,它确实需要小写:netTcpBinding。但是,它仍然不起作用,现在我有:

协议"net.tcp"不是 支持。>.

WCF .svc 有效,但配置文件无效

好的,这就解释了 - Visual Studio默认使用内置的Cassini网络服务器(除非你已经切换到使用IIS Express) - 并且该服务器不支持纯http之外的任何内容。

卡西尼不支持net.tcp和类似的东西。

您将需要开始使用单独的 IIS 虚拟目录,并首先启用所有必要的支持内容(在"添加/删除 Windows 功能"对话框中)