Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用Postman或SoapUI测试WCFService1会给出400个错误请求_.net_Wcf_Visual Studio 2013_Soapui_Postman - Fatal编程技术网

.net 使用Postman或SoapUI测试WCFService1会给出400个错误请求

.net 使用Postman或SoapUI测试WCFService1会给出400个错误请求,.net,wcf,visual-studio-2013,soapui,postman,.net,Wcf,Visual Studio 2013,Soapui,Postman,当我在VisualStudio2013中创建一个名为“WcfService1”的全新WCF服务应用程序并立即运行它时,WCF测试客户端完成的请求工作正常。不足为奇 当我尝试在REST/SOAP客户机(如Postman或SoapUI)中测试相同的初始应用程序时,我得到一个400错误的请求错误。在像Postman这样的REST客户机中,为了使对初始VS应用程序的请求生效,应该更改什么 除其他外,我测试了这些可能性: 1。初始WCF服务应用程序交付的源代码 [ServiceContract]

当我在VisualStudio2013中创建一个名为“WcfService1”的全新WCF服务应用程序并立即运行它时,WCF测试客户端完成的请求工作正常。不足为奇

当我尝试在REST/SOAP客户机(如Postman或SoapUI)中测试相同的初始应用程序时,我得到一个400错误的请求错误。在像Postman这样的REST客户机中,为了使对初始VS应用程序的请求生效,应该更改什么

除其他外,我测试了这些可能性:

1。初始WCF服务应用程序交付的源代码

[ServiceContract] public interface IService1 { [OperationContract] string GetData(int value); } [OperationContract] [WebInvoke(Method = "POST", UriTemplate = "/GetData")] string GetData(int value); [服务合同] 公共接口IService1 { [经营合同] 字符串GetData(int值); } 为了可读性,我不会粘贴整个项目的源代码。如果愿意,可以通过在VS中创建新的WCF服务应用程序项目来生成它

下面您可以看到我是如何配置Postman的,它会给出400个错误请求:

2。从WCF测试客户端复制的邮递员原始XML请求

此变体无法解决此错误。源代码原封不动,同上

3。在GetData操作上使用WebInvokeAttribute扩展的源代码

[ServiceContract] public interface IService1 { [OperationContract] string GetData(int value); } [OperationContract] [WebInvoke(Method = "POST", UriTemplate = "/GetData")] string GetData(int value); [经营合同] [WebInvoke(Method=“POST”,UriTemplate=“/GetData”)] 字符串GetData(int值); 这个添加并没有解决这个错误。邮递员中的所有设置与上面相同;当然,URL中有/GetData

4。GetData操作的OperationContractAttribute已扩展

[OperationContract(Action = "http://www.jorritsteetskamp.nl/wcfservice1")] string GetData(int value); [运营合同(行动=”http://www.jorritsteetskamp.nl/wcfservice1")] 字符串GetData(int值); 我尝试添加SOAPAction标题的Postman,但再次导致错误400:

因此,关于WCF服务和400个错误请求存在一些问题,但所有这些问题似乎都是特定于应用程序的,对于这种情况没有解决方案。由于此问题发生在VisualStudio生成的初始应用程序中,并且在WCF测试客户端中工作,因此我找到了发布此问题的理由

我的问题是:在像Postman这样的REST客户机中,为了使对初始VS应用程序的请求生效,应该更改什么

任何帮助都将不胜感激

  • 案例1:您正在发布表单数据,而应该发布SOAP/XML
  • 案例2:缺少SOAP操作头
  • 案例3:请求似乎正常,但您可能尚未配置WebHttp端点
  • 案例4:服务URL中不需要GetData
为了使其成为REST服务,您需要

  • 使用WebGet/WebInvoke对服务方法进行Annonate
  • 配置WebHttp端点
  • 使用案例3中的请求

  • 谢谢你的解释,这正是我需要的。供将来参考:我的解决方案是合并案例2和案例4。来自WCF测试客户机的原始XML的头部分应该被REST客户机中的真实SOAPAction头替换(案例4)。事实上,没有GetData的URL。在这个解决方案中,似乎不需要配置WebHttp端点,因为默认的.NET配置是可以的。