我有一个复杂的 WCF Rest 服务,它接受多个输入和对象。我不能简单地通过在 Fiddler 中执行 HTTP POST 来调用它,因为要提供的数据太多(我可以,但它会永远占用我)。所以我想使用代理在代码中做到这一点。有没有办法为 .NET 4 WCF Rest Service 生成代理?否则,你有什么建议让我轻松测试服务?
谢谢。
没有为 WCF REST 服务创建代理的标准方法(没有用于 REST 的 WSDL,一种新兴的标准 WADL 没有被广泛采用,WCF 也不支持它)。出于测试目的,您应该与客户端共享接口,并使用 ChannelFactory<T> -并在工厂的 Endpoint 属性中设置适当的行为,或者使用帮助程序类 WebChannelFactory<T> 为您执行此操作。
假设接口被称为 ITest,这就是你所拥有的:
Uri serviceUri = new Uri("http://my.service.com/endpoint");
WebChannelFactory<ITest> factory = new WebChannelFactory<ITest>(serviceUri);
ITest proxy = factory.CreateChannel();
Assert.AreEqual(9, proxy.Add(4, 5));
尽管目前没有使用 WCF REST 服务创建代理的标准方法,但您可以使用REST Starter kit中的“将 XML 粘贴为类型”工具来执行此操作。这适用于默认 WCF /help 页面中显示的 xml,并生成与结构匹配且可以使用的 C# 类。另外,请观看此视频以了解它的实际效果 -消费者 Twitter 3 分钟内。
您可以使用与非 RESTful WCF 服务相同的步骤创建代理:
// Create the proxy
ChannelFactory<IContract> channelFactory = new ChannelFactory<IContract>("endpointName");
var restfulProxy = factory.CreateChannel();
// Invoke a method
var response = proxy.MyRestfulMethod("param1", "param2");
svcutil.exe将创建一个代理类,您可以在调用应用程序中使用它,这将允许您调用适当的方法并在代码中传递参数