当我在Visual Studio 2013中创建一个名为“WcfService1”的全新WCF服务应用程序并立即运行它时,WCF Test Client完成的请求工作正常。不出所料。使用Postmen或SoapUI测试WCFService1会给出400错误请求
当我尝试在Postman或SoapUI等REST/SOAP客户端中测试相同的初始应用程序时,出现400错误请求错误。像Postman这样的REST客户端应该改变什么来向最初的VS应用程序发出请求?
除其他我测试过这些可能性:如交付由最初的WCF服务应用程序
[ServiceContract] public interface IService1 { [OperationContract] string GetData(int value); }
为了提高可读性,我不会的源代码从整个项目粘贴
1的源代码。如果你愿意,你可以通过在VS中创建一个新的WCF服务应用程序项目来生成它。
下面你看到的我是如何配置的邮递员,它给400错误的请求:
2.邮差原始XML请求从WCF测试客户端
复制这个变体没有解决这个错误。源代码未改变,与上述相同。
3.源代码WebInvokeAttribute扩展上的GetData操作
[OperationContract] [WebInvoke(Method = "POST", UriTemplate = "/GetData")] string GetData(int value);
这除了没有解决的错误。邮差中的所有设置都与上面相同;当然在URL中使用/ GetData。
4.的GetData操作OperationContractAttribute扩展
[OperationContract(Action = "http://www.jorritsteetskamp.nl/wcfservice1")] string GetData(int value);
我试图邮差与添加的SOAPAction头,但同样地导致错误400:
在SO存在几个有关WCF服务和400错误请求错误的问题,但它们都看起来是特定于应用程序的,并且没有针对此案例的解决方案。由于Visual Studio生成的初始应用程序出现此问题,并且在WCF Test Client中工作,所以我发现发布此问题的原因。
我的问题是:像Postman这样的REST客户端应该如何改变以向最初的VS应用程序工作提出请求?
任何帮助将不胜感激。
感谢您的解释,这正是我所需要的。以供将来参考:我的解决方案是将情况2和4结合起来。来自WCF Test Client的原始XML的Header部分应该由REST客户端中真实的SOAPAction头替换(案例4)。而且确实没有GetData的URL。在这个解决方案中,似乎不需要配置WebHttp端点,因为.NET的默认配置很好。 –