如何解决如何在使用 WSDL 和 WCF 与远程服务通信时启用 GZip 压缩
我正在尝试使用 WSDL 文件和 WCF 将数据发送到 irs。我正在使用 .NET 和 Microsoft VS.NET,它们创建了一个我用来进行通信的代理类。
我的问题是我不断收到一条消息,说 irs 需要 GZip 压缩:
必须使用 HTTP 压缩 (RFC 1952 - GZIP) 发送请求消息。请查看位于 https://www.irs.gov/e-file-providers/air/affordable-care-act-information-return-air-program 的出版物 5258,AIR 提交组合和参考指南的第 5 节中概述的传输说明,更正任何问题,然后重试。'
错误消息中提到的发布非常通用,并非特定于 .NET 和 WCF。我做了一些研究,找到了一种在 web.config 中启用 GZip 压缩的方法:
<binaryMessageEncoding compressionFormat="GZip" />
但是,我现在收到此错误:
响应消息的内容类型 text/xml;charset=utf-8 与绑定的内容类型(application/soap+msbin1+gzip)不匹配。如果使用自定义编码器,请确保正确实现 IsContentTypeSupported 方法。
有谁知道我做错了什么?我需要创建自定义编码器吗?这是我的完整 web.config 文件:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.7.2"/>
<httpRuntime targetFramework="4.7.2"/>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider,Microsoft.CodeDom.Providers.DotNetCompilerPlatform,Version=2.0.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:default /Nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider,PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:default /Nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="GetACATransmitterStatusReqBinding">
<security mode="Transport" />
</binding>
<binding name="GetACATransmitterStatusReqBinding1" />
</basicHttpBinding>
<customBinding>
<binding name="BulkRequestTransmitterBinding">
<!--<textMessageEncoding messageVersion="Soap11WSAddressing10" />-->
<binaryMessageEncoding compressionFormat="GZip" />
<httpsTransport />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="https://la.www4.irs.gov/airp/aca/a2a/1095BC_Transmission_AATS"
binding="customBinding" bindingConfiguration="BulkRequestTransmitterBinding"
contract="BulkRequestTransmitterService.BulkRequestTransmitterPortType"
name="BulkRequestTransmitterPort" />
<endpoint address="https://la.www4.irs.gov/airp/aca/a2a/1095BC_Status_Request_AATS"
binding="basicHttpBinding" bindingConfiguration="GetACATransmitterStatusReqBinding"
contract="ACAGetTransmitterBulkRequestStatus.ACATransmitterStatusReqPortType"
name="ACATransmitterStatusReqPort" />
</client>
</system.serviceModel>
</configuration>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。