C# WSCF生成的WCF服务。蓝色服务错误“;实现类型是接口或抽象类,未提供任何实现对象;

C# WSCF生成的WCF服务。蓝色服务错误“;实现类型是接口或抽象类,未提供任何实现对象;,c#,wcf,wsdl,abstract,wscf.blue,C#,Wcf,Wsdl,Abstract,Wscf.blue,我正在使用C#Visual Studio 2012创建wcf服务 我让WSCF.blue工具从xsd-s生成wsdl。然后,我使用相同的工具生成了web服务代码。WSCF.blue不创建服务契约和数据契约。它创建一个接口和一个.svc文件,其中包含一个实现该接口的类 在生成web服务代码时,我选择了创建抽象类的选项,因为我希望能够将这些类的实现保存在单独的文件中 抽象类如下所示: [KnownType(typeof(WebMobileImplementation))] public

我正在使用C#Visual Studio 2012创建wcf服务

我让WSCF.blue工具从xsd-s生成wsdl。然后,我使用相同的工具生成了web服务代码。WSCF.blue不创建服务契约和数据契约。它创建一个接口和一个.svc文件,其中包含一个实现该接口的类

在生成web服务代码时,我选择了创建抽象类的选项,因为我希望能够将这些类的实现保存在单独的文件中

抽象类如下所示:

 [KnownType(typeof(WebMobileImplementation))]     
public abstract class WebMobile : IWebMobile
{
      public abstract PutLocationsResponse PutLocations(PutLocationsRequest request);
}
实现类(在另一个文件中)如下所示(目前):

当尝试浏览服务时,我得到一条消息:“服务实现类型是一个接口或抽象类,没有提供任何实现对象。”
我认为将knowntype添加到实现类中就可以做到这一点,但在运行服务时似乎没有“看到”实现。我还可以做些什么来“连接”它们?

在WCF 4.0中,您可以在Web.config中定义映射到您的服务类型的虚拟服务激活端点。这使激活WCF服务成为可能,而无需维护物理.svc文件

<serviceHostingEnvironment>
  <serviceActivations>
    <add relativeAddress="WebMobile.svc" 
         service="WebMobileNamespace.WebMobileImplementation"/>
  </serviceActivations>
</serviceHostingEnvironment>

在.svc文件中,您可能有Service=“YourNamespace.WebMobile”。尝试将其更改为Service=“YourNamespace.WebMobileImplementation”
<serviceHostingEnvironment>
  <serviceActivations>
    <add relativeAddress="WebMobile.svc" 
         service="WebMobileNamespace.WebMobileImplementation"/>
  </serviceActivations>
</serviceHostingEnvironment>