由WSCF生成的WCF服务.蓝色服务错误“实现类型是一个接口或抽象类,并且没有提供实现对象”

本文关键字:服务 实现 抽象类 一个 接口 对象 WCF WSCF 蓝色 错误 类型 | 更新日期: 2023-09-27 17:55:04

我正在使用c# Visual Studio 2012创建一个wcf服务。

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

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

抽象类看起来像这样:

 [KnownType(typeof(WebMobileImplementation))]     
public abstract class WebMobile : IWebMobile
{
      public abstract PutLocationsResponse PutLocations(PutLocationsRequest request);
}

实现类(在另一个文件中)看起来像这样(目前):

 public class WebMobileImplementation : WebMobile
{
    public  override PutLocationsResponse PutLocations(PutLocationsRequest request)
    {
        PutLocationsResponse response = new PutLocationsResponse();
        return response;
    }
}

当尝试浏览服务时,我得到消息:"服务实现类型是接口或抽象类,没有提供实现对象"我认为将knowntype添加到实现类中会奏效,但在运行服务时似乎没有"看到"实现。我还能做些什么来"连接"他们?

由WSCF生成的WCF服务.蓝色服务错误“实现类型是一个接口或抽象类,并且没有提供实现对象”

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

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