2

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

我让 WSC​​F.blue 工具从 xsd-s 生成 wsdl。然后我使用相同的工具生成了 Web 服务代码。WSCF.blue 不创建服务契约和数据契约。它创建一个接口和一个包含实现该接口的类的 .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 添加到实现类就可以了,但似乎实现不是运行服务时“看到”。我还能做些什么来“连接”它们?

4

1 回答 1

0

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

<serviceHostingEnvironment>
  <serviceActivations>
    <add relativeAddress="WebMobile.svc" 
         service="WebMobileNamespace.WebMobileImplementation"/>
  </serviceActivations>
</serviceHostingEnvironment>
于 2013-01-22T20:04:15.790 回答