【问题标题】:wsHttpBinding on the wcf service and web reference on the client don't workwcf 服务上的 wsHttpBinding 和客户端上的 Web 引用不起作用
【发布时间】:2011-07-11 11:44:23
【问题描述】:

我正在使用 wsHttpBinding 和 WCF 服务。

我已经添加了一个网络参考并且我已经有了网络代理(它基于SoapHttpClientProtocol)。

我还尝试使用wsdl.exe 和 wcf 服务生成的实际 wsdl (http://zzzz/zz.svc?wsdl) 构建代理。

客户端调用服务时出现如下错误:

The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 'http://tempuri.org/Service1/Operation1'.

为什么客户端(Web 代理)不能使用我的 WCF 服务?

我应该采取哪些步骤来使它们发挥作用?

我正在运行 .NET FW 3.5 和 ASP.NET 2.0。

【问题讨论】:

标签: wcf soap wsdl wshttpbinding soapheader


【解决方案1】:

您不能使用旧 ASMX 代理默认配置在 wsHttpBinding 上公开的服务。您必须使用添加服务参考/svcutil 或将绑定更改为basicHttpBindingwsHttpBinding 的默认配置使用高级安全性,ASMX 不支持它。

【讨论】:

  • 非常感谢您快速连贯的回答!希望它可以帮助任何犯同样错误的人......
  • 我已将绑定更改为 basicHttpBinding,但现在我得到以下信息: System.Net.WebException:请求失败,HTTP 状态 415:无法处理消息,因为内容类型为 'application/soap+ xml;字符集=utf-8; action="tempuri.org/IService1/Operation1"' 不是预期的类型 'text/xml;字符集=utf-8'。我使用 SOAPUI 4.0 来测试服务。 WCFTestClient 可以正常使用该服务,但 ASMX 代理不能。但我需要使用网络(ASMX)代理...
  • 它表示您在 SOAP 1.2 中传递请求,但服务只接受 SOAP 1.1。
  • 好的。那么如何更改客户端以使用 SOAP 1.1?这是我的服务器配置:
  • 删除您的代理并再次添加网络参考。 BasicHttpBinding 仅使用 SOAP 1.1,因此客户端应该自动使用它。
猜你喜欢
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多