0

我一直在阅读与“响应消息的内容类型文本/html 与绑定的内容类型(应用程序/soap+xml;charset=utf-8)不匹配”问题相关的帖子但似乎没有一个解决我的问题。

让我解释:

我有一个对 WCF 方法的 ajax 调用,它返回一个 json 对象。

阿贾克斯调用

好的,现在我的 wcf 服务位于同一个应用程序中(不要问我为什么):

WCF

这是应用程序拥有的唯一 web.config。

<services>
    <service behaviorConfiguration="defaultBehavior" name="HSMobileApp.Services.HSMobile">

        <endpoint address="pox" behaviorConfiguration="poxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" contract="HSMobileApp.Services.IHSMobile" />

    <host>
        <baseAddresses>
            <add baseAddress="/Services/HSMobile" />
        </baseAddresses>
    </host>
    </service>
</services>

<bindings>
  <webHttpBinding>
    <binding name="webBinding" />
  </webHttpBinding>
</bindings>

<behaviors>
  <endpointBehaviors>
    <behavior name="poxBehavior">
      <webHttp defaultOutgoingResponseFormat="Xml" />
    </behavior>
    <behavior name="jsonBehavior">
        <webHttp defaultOutgoingResponseFormat="Json" />
    </behavior>
  </endpointBehaviors>

  <serviceBehaviors>
    <behavior name="defaultBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

所以,我的 ajax 调用我在同一个应用程序中托管的 svc,在 Visual Studio 2010 环境中工作正常,但是当我尝试在 IIS 上调试它时,这是我在达到 WCF 方法后得到的。

"Associate":0,"MenuOptions":"响应消息的内容类型text/html与绑定的内容类型(application/soap+xml;charset=utf-8)不匹配。如果使用自定义编码器,确保 IsContentTypeSupported 方法正确实现。响应的前 1024 个字节是:...

我知道这一定是某种绑定 o IIS 的情况,但我不知道在哪里看,因为我的服务器 web.config 与客户端 web.config 相同

我在 Windows 7 Enterprise、IIS 7.5、VS2010 和 jquery 1.6.2 中工作

请帮我!!

4

1 回答 1

0

您可以删除“jsonBehaviour”(因为它未使用)并尝试将其放入您的“poxBehaviour”中:

<webHttp automaticFormatSelectionEnabled ="true" />

您还应该能够简化您的服务,只需使用以下内容:

<endpoint address="pox" behaviorConfiguration="poxBehavior" kind="webHttpEndpoint" contract="HSMobileApp.Services.IHSMobile" />

在您的 AJAX 请求中,您可以设置接受标头或内容类型以明确告诉服务器您想要 JSON 结果,否则它将使用默认格式,请参阅此处以获取有关“automaticFormatSelectionEnabled”设置的更多详细信息

请注意,这假定您的 WCF 属性已在您的服务器代码中正确设置(它们可能是这样,否则它永远不会起作用)。

于 2013-04-04T11:34:12.983 回答