内容类型为text / html; charset =响应消息的UTF-8与绑定的内容类型不匹配(text / xml; charset = utf-8)

我创建了WCF服务并使用独立应用程序测试WCF客户端。 我能够使用Internet Explorer查看此服务,也可以在Visual Studio服务引用中查看。 这是错误消息。

"The content type text/html; charset=UTF-8 of the response message does not match the content type of the binding (text/xml; charset=utf-8)."

你能告诉我什么可能是错的吗?

谢谢。

由于返回的内容类型是text/html ,我怀疑您的调用导致WCF之外的服务器端错误(您正在接收HTML错误页面)。

尝试使用Web调试代理(如Fiddler)查看响应。


(根据评论编辑):

根据您的评论,我看到您的WCF在经过表单身份validation的站点中的Sharepoint 2010下托管。

您收到的错误是由于您的WCF客户端未使用sharepoint进行身份validation – 它没有有效的身份validationcookie。 然后Sharepoint将HTTP重定向返回到html页面(login.aspx页面); 这是您的WCF客户端不期望的。

为了更进一步,您必须从Sharepoint获取身份validationcookie(请参阅身份validationWeb服务 )并将其传递给您的WCF客户端。


(更新编辑):

错误:该网站正在使用基于声明的身份validation。

虽然这不一定是由于cookie或表单身份validation,但提供的错误消息的解释保持不变。 身份validation问题导致重定向到HTML页面,而WCF客户端无法处理该页面。

这可能会有所帮助,请检查ISS 7中的URL重写规则。如果您没有正确配置规则,则会出现此问题。

听起来您的应用程序期望XML但是接收纯文本。 你传入的是什么类型的物体?

text / html是SOAP 1.1标头和Content-Type:application / soap + xml是SOAP 1.2validation绑定并返回标头。 应该是1.1或1.2相同

将以下代码添加到web.config服务器项目中

               

然后更新客户端Web服务,更新后,进行以下更改web.config

         

我希望有用