【问题标题】:Content Type text/xml; charset=utf-8 was not supported by service内容类型文本/xml; charset=utf-8 不受服务支持
【发布时间】:2012-01-05 05:18:08
【问题描述】:

我的 WCF 服务有问题。 我有一个控制台应用程序,我需要在不使用 app.config 的情况下使用该服务,因此我必须通过代码设置端点等。 我确实有对 svc 的服务引用,但我不能使用 app.config。 这是我的代码:

BasicHttpBinding binding = new BasicHttpBinding();

EndpointAddress address = new EndpointAddress("http://localhost:8731/WcfServicio/MiServicio");

MiServicioClient svc = new MiServicioClient(binding, address);
object ob = svc.PaisesObtener();

在我做svc.PaisesObtener() 的最后一行我得到错误:

Content Type text/xml; charset=utf-8 was not supported by service
http://localhost:8731/WcfServicio/MiServicio.  The client and service bindings may be mismatched.

【问题讨论】:

    标签: wcf endpoint


    【解决方案1】:

    第一个谷歌点击说:

    这通常是客户端/服务器绑定不匹配,其中服务中的消息版本使用 SOAP 1.2(需要 application/soap+xml),而客户端中的版本使用 SOAP 1.1(发送文本/xml) . WSHttpBinding 使用 SOAP 1.2,BasicHttpBinding 使用 SOAP 1.1。

    通常看起来一侧是 wsHttpBinding,另一侧是 basicHttpBinding。

    【讨论】:

    • 我也遇到了同样的问题。我的 web.config 列出了 2 个端点,第一个 address="basic" binding="basicHttpBinding" 和第二个 address="secure" binding="basicHttpsBinding",但是当我尝试在 Visual Studio 中添加服务引用时,我得到了错误。
    • @PedroC88 从那我不知道出了什么问题。请尝试打开您自己的问题,但请务必显示您尝试过的所有相关配置和步骤,例如您是否可以从浏览器访问服务的 URL,以及 WcfTestClient.exe 是否可以访问该服务。
    • 对于我来说,当我收到此错误时,我已将路径的链接复制到我的元数据端点而不是我的基本 http 绑定
    • 这篇文章现在是谷歌的第一篇文章:-D
    • 如果您的服务全名和服务部分名称不匹配,也会出现此错误。检查
    【解决方案2】:

    不要忘记检查绑定相关的代码。 所以如果你写:

    BasicHttpBinding binding = new BasicHttpBinding();
    

    确保您的所有app.config 文件都包含

    <endpoint address="..."
              binding="basicHttpBinding" ...
    

    不是

    <endpoint address="..."
              binding="wsHttpBinding" ...
    

    差不多。

    【讨论】:

    • 配置更新(wsHttpBindingbasicHttpBinding)是我的票。谢谢!
    【解决方案3】:

    我今天看到这种行为

       <service name="A.B.C.D" behaviorConfiguration="returnFaults">
            <endpoint contract="A.B.C.ID" binding="basicHttpBinding" address=""/>
        </service>
    

    从 web.config 中丢失。 service.svc 文件在那里并得到了服务。花了一段时间才意识到问题不在于它自己的绑定配置......

    【讨论】:

      【解决方案4】:

      我今天在尝试使用 VS2010 和 svcutil 创建 WCF 服务代理时看到了这个问题。

      我所做的一切都是使用basicHttpBinding(所以wsHttpBinding 没有问题)。

      在我的回忆中,MSDN 第一次为我提供了解决方案,位于以下链接How to: Publish Metadata for a Service Using a Configuration File。我需要更改的行位于我的服务 app.config 文件中的 MEX 服务行为元素内的行为元素内。我把它从

      <serviceMetadata httpGetEnabled="true"/>  
      

      <serviceMetadata httpGetEnabled="true" policyVersion="Policy15"/>
      

      就像魔术一样,错误消失了,我能够创建服务代理。请注意,有一个相应的 MSDN 条目用于使用代码而不是配置文件:How to: Publish Metadata for a Service Using Code.

      (当然,Policy15 - 我怎么可能忽略了这一点???)

      还有一个“陷阱”:我的服务需要公开 3 个不同的端点,每个端点都支持不同的合同。对于我需要构建的每个代理,我必须注释掉其他 2 个端点,否则 svcutil 会抱怨它无法解析基本 URL 地址。

      【讨论】:

        【解决方案5】:

        我在使用 Channel Factory 时遇到了类似的问题。这实际上是由于端点中指定了错误的合同。

        【讨论】:

          【解决方案6】:

          对于任何通过搜索到达这里的人:

          内容类型'应用程序/json; charset=utf-8' 不是预期的类型 'text/xml;字符集=utf-8

          或该错误的某个子集:

          在我的案例中,由于构建和运行没有适当属性的服务而导致了类似的错误。当我尝试在客户端应用程序中更新服务引用时收到此错误消息。当我将[DataContract][DataMember] 属性正确应用到我的自定义类时,它得到了解决。

          如果您的服务已设置并正常工作,但在您编辑后它中断了,这很可能适用。

          【讨论】:

          • 这正是发生在我身上的事情,在将正确的属性添加到所有新的 DTO 之后,它立即起作用
          【解决方案7】:

          我最近也面临同样的问题。苦苦挣扎了几个小时,终于找到解决办法了

          Factory="System.ServiceModel.Activation.WebServiceHostFactory"
          to your SVC markup file. e.g.
          ServiceHost Language="C#" Debug="true" Service="QuiznetOnline.Web.UI.WebServices.LogService" 
          Factory="System.ServiceModel.Activation.WebServiceHostFactory" 
          

          现在您可以成功编译并运行您的应用程序了。

          【讨论】:

            【解决方案8】:

            再次强调,命名空间、svc 名称和合同必须在 web.config 文件中正确指定:

             <service name="NAMESPACE.SvcFileName">
                <endpoint contract="NAMESPACE.IContractName" />
              </service>
            

            例子:

            <service name="MyNameSpace.FileService">
            <endpoint contract="MyNameSpace.IFileService" />
            </service>
            

            (这些示例中省略了不相关的标签)

            【讨论】:

              【解决方案9】:

              就我而言,我必须在客户端应用程序的 app.config 中将 messageEncoding 指定为 Mtom,如下所示:

              <?xml version="1.0" encoding="utf-8" ?>
              <configuration>
                  <startup> 
                      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
                  </startup>
                  <system.serviceModel>
                      <bindings>
                          <basicHttpBinding>
                              <binding name="IntegrationServiceSoap" messageEncoding="Mtom"/>
                          </basicHttpBinding>
                      </bindings>
                      <client>
                          <endpoint address="http://localhost:29495/IntegrationService.asmx"
                              binding="basicHttpBinding" bindingConfiguration="IntegrationServiceSoap"
                              contract="IntegrationService.IntegrationServiceSoap" name="IntegrationServiceSoap" />
                      </client>
                  </system.serviceModel>
              </configuration>
              

              我的客户端和服务器都使用 basicHttpBinding。 我希望这对其他人有帮助:)

              【讨论】:

                【解决方案10】:

                我遇到了这个错误,上面提到的所有配置都是正确的,但是我仍然收到“客户端和服务绑定可能不匹配”错误。

                解决我的错误的方法是匹配以下服务节点和客户端配置文件中的 messageEncoding 属性值。它们在我的不同,服务是 Text 和客户端 Mtom。将服务更改为 Mtom 以匹配客户的服务,解决了问题。

                <configuration>
                  <system.serviceModel>
                      <bindings>
                           <basicHttpBinding>
                              <binding name="BasicHttpBinding_IMySevice" ... messageEncoding="Mtom">
                              ...
                              </binding>
                           </basicHttpBinding>
                      </bindings>
                  </system.serviceModel>
                </configuration>
                

                【讨论】:

                  猜你喜欢
                  • 2013-03-11
                  • 2019-11-23
                  • 2015-03-26
                  • 2018-07-24
                  • 1970-01-01
                  • 2020-01-08
                  • 2015-11-01
                  • 1970-01-01
                  • 2018-06-11
                  相关资源
                  最近更新 更多