我可以看到SOAP WCF over REST(json)wcf的唯一参数是,一旦创建了我的服务,我就可以在visual studio中添加一个引用,我可以为我和客户端添加一些强类型类我可以通过我所有的webmethod调用的类。据我所知,它甚至设置了web.config。
然而,当我公开REST(json)服务时,我仍然得到一个WSDL。所以我想知道还有一种方法可以自动构建我的引用吗?
答案 0 :(得分:3)
不使用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-a-k-a-rest-endpoint-does-not-work.aspx上的帖子提供了有关此问题的更多信息。
答案 1 :(得分:0)
我想详细说明:
虽然确实无法使用JSON REST WCF服务获取WSDL添加服务引用,但我所做的是创建两个met数据挂钩:
即
public class Discover
{
public Manager Manager {get;}
public Employee Emp {get;}
....
}
[OperationContract]
public Discover DiscoverDTOs()
答案 2 :(得分:0)
您可以间接地进行。尽管Visual Studio生成的客户端无法使用,但该客户端实现了一个接口,该接口也已生成,您可以像这样使用该接口:
public/data/data.json
WebChannelFactory<IService> factory = new WebChannelFactory<IService>(new Uri(endpointAddress));
IService proxy = factory.CreateChannel();
int result = proxy.Operation(1, 2, 3);
还有一个接受WebChannelFactory
的重载,您可以根据服务配置进行配置,也可以在app.config文件中手动进行此配置。
答案 3 :(得分:0)
非常老的问题,较新的答案。
今天使用openapi(swagger),我可以通过使用swagger inspector进行采样来实现此目的,我可以记录我的其余服务,并创建一个规范yml / json文件,允许进行验证和接受标准,以及用于我确定可以使用java,python,c#,ruby,javascript和其他