对于 SOAP WCF over REST (json) wcf,我可以看到的唯一参数是,一旦创建了我的服务,我就可以在 Visual Studio 中添加一个引用,并且我可以为我准备好大量强类型类和一个我的客户端类可以通过调用我所有的网络方法。据我所知,它甚至设置了 web.config。
但是,当我公开一个 REST (json) 服务时,我仍然得到一个 WSDL。所以我想知道是否还有一种方法可以自动构建我的引用?
不使用 WCF 工具。与 SOAP(具有描述服务的既定协议 - WSDL)不同,REST 没有。WADL 就是这样一种协议,但它并不太普及,WCF 也不支持它。您仍然会获得 WSDL,因为 WCF 将描述它可以从服务中获得的所有内容。但是,WSDL 不会有一个<wsdl:port>
元素来描述 REST 端点,这就是您获得 WSDL 但无法生成对它的引用的原因。
http://blogs.msdn.com/b/carlosfigueira/archive/2012/03/26/mixing-add-service-reference-and-wcf-web-http-aka-rest-endpoint-does-not上的帖子-work.aspx有更多关于这个问题的信息。
很老的问题,新的答案。
今天使用 openapi (swagger) 我可以通过使用swagger 检查器做示例来实现这一点,我可以记录我的休息服务,并创建一个规范 yml/json 文件,允许验证和接受标准以及 java、python、c# 的自动化客户端, ruby,javascript 和其他我确定
我想详细说明一下:
尽管您确实无法使用 JSON REST WCF 服务获得 WSDL 添加服务引用,但我所做的是创建两个遇到数据挂钩:
IE
public class Discover
{
public Manager Manager {get;}
public Employee Emp {get;}
....
}
[OperationContract]
public Discover DiscoverDTOs()
你可以,间接地。虽然 Visual Studio 生成的客户端不起作用,但该客户端实现了一个也生成的接口,您可以像这样使用它:
WebChannelFactory<IService> factory = new WebChannelFactory<IService>(new Uri(endpointAddress));
IService proxy = factory.CreateChannel();
int result = proxy.Operation(1, 2, 3);
WebChannelFactory
有另一个接受 a 的重载WebHttpBinding
,您可以根据服务配置进行配置,也可以在 app.config 文件中手动进行此配置。