使用basicHttpBinding的WCF服务仍然发送内容类型“textxml”

使用basicHttpBinding的WCF服务仍然发送内容类型“textxml”,第1张

概述我正在编写一个在IIS上运行的WCF服务,我有一个客户,其客户端只能与SOAP 1.1交谈. 除此之外,他们需要内容类型为“application / soap xml; charset = utf-8”.我的WCF服务正在发送“text / xml; charset = utf-8”. 正在尝试编写客户端的客户转发了一条错误消息: HTTP 415: Cannot process the mes 我正在编写一个在IIS上运行的WCF服务,我有一个客户,其客户端只能与SOAP 1.1交谈.

除此之外,他们需要内容类型为“application / soap xml; charset = utf-8”.我的WCF服务正在发送“text / xml; charset = utf-8”.

正在尝试编写客户端的客户转发了一条错误消息:

http 415: Cannot process the message because the content type
‘text/xml; charset=utf-8’ was not the expected type
‘application/soap+xml; charset=utf-8

浏览网络,我发现了许多这样的博客页面:WCF Error – The request failed with HTTP status 415.

这让我觉得从wshttpBinding切换到basichttpBinding会解决这个问题.所以我更改了web.config中的绑定,并修改了我自己的测试客户端,以显式创建一个带有BasichttpBinding的端点.这一切都运行良好,在我自己的测试中(在Visual Studio的Dev Server中运行服务,在我自己的机器上的IIS7中运行它,并在我们的一个测试服务器上的IIS6中运行它.)

但在我向顾客提出要求之前,让他们看看我的改变是否会对他们起作用之前,我向fiddler开火,以窃听实际的流量.

据fiddler说,我还在发送“text / xml; charset = utf-8”.

那么,我该如何解决这个问题呢?

<system.serviceModel>    <services>        <service behaviorConfiguration="myBehavior" name="myname">            <endpoint                     address=""                    binding="basichttpBinding"                     behaviorConfiguration="flatWsdlfileEndpointBehavior"                     bindingnamespace="http://mynamespace"                    contract="myContract">                <IDentity>                    <dns value="localhost"/>                </IDentity>            </endpoint>            <endpoint address="mex" binding="mexhttpBinding" contract="IMetadataExchange"/>        </service>    </services>    <behaviors>        <serviceBehaviors>            <behavior name="myBehavior">                <serviceMetadata httpGetEnabled="true"/>                <serviceDeBUG includeExceptionDetailinFaults="true"/>            </behavior>        </serviceBehaviors>        <endpointBehaviors>            <behavior name="flatWsdlfileEndpointBehavior">                <wsdlExtensions location="myUrl" singlefile="true" />            </behavior>        </endpointBehaviors>    </behaviors>    <bindings>        <basichttpBinding>        </basichttpBinding>    </bindings>    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>    <extensions>        <behaviorExtensions>            <add name="wsdlExtensions" type="WCFExtras.Wsdl.WsdlExtensionsConfig,WCFExtras,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"/>        </behaviorExtensions>    </extensions></system.serviceModel>
解决方法 那么他们需要SOAP 1.1或application / soap xml;字符集= UTF-8?因为SOAP 1.1规范说请求必须有text / xml作为媒体类型. application / soap xml是SOAP 1.2的媒体类型.强制WCF将SOAP 1.1与application / soap xml(=无效SOAP)一起使用将需要比更改绑定更大的更改.您将需要一些自定义消息编码器或传输通道. 总结

以上是内存溢出为你收集整理的使用basicHttpBinding的WCF服务仍然发送内容类型“text / xml”全部内容,希望文章能够帮你解决使用basicHttpBinding的WCF服务仍然发送内容类型“text / xml”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1127876.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存