唯一的说法,我可以看到SOAP WCF通过REST(JSON)WCF是,一旦我的业务创建,我可以添加在Visual Studio AA参考的事实,我得到的强类型类的负载为我准备好与客户端类,我可以打电话给我通过所有的webmethod。 甚至据我记得设置web.config中。
然而,当我露出REST(JSON)服务,我仍然获得了WSDL。 所以,我想知道是否还可以自动建立我引用的方法吗?
唯一的说法,我可以看到SOAP WCF通过REST(JSON)WCF是,一旦我的业务创建,我可以添加在Visual Studio AA参考的事实,我得到的强类型类的负载为我准备好与客户端类,我可以打电话给我通过所有的webmethod。 甚至据我记得设置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在这个问题上多了很多信息。
我想上面详细说明:
虽然这是事实,你不能得到一个JSON REST WCF服务的WSDL附加服务的参考,我要做的就是创建两个气象数据挂钩:
即
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
具有接受另一种超负荷WebHttpBinding
,您可以配置基于服务的配置,或者您可以在您的app.config文件手动进行此配置。