由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添加到实现类中会奏效,但在运行服务时似乎没有"看到"实现。我还能做些什么来"连接"他们?
在WCF 4.0中,您可以定义映射到Web.config中的服务类型的虚拟服务激活端点。这使得激活WCF服务成为可能,而不必维护物理的。svc文件。
<serviceHostingEnvironment>
<serviceActivations>
<add relativeAddress="WebMobile.svc"
service="WebMobileNamespace.WebMobileImplementation"/>
</serviceActivations>
</serviceHostingEnvironment>