我正在通过他们的 WSDL 为 IRS 集成 A2A 渠道,目前在我的 App.config 中遇到了一个问题。目前<gzipMessageEncoding/>
我的 App.config 的节点有一个警告:
元素“绑定”具有无效的子元素“gzipMessageEncoding”。预期的可能元素列表:(...)。
我主要在这里查看了由fatherOfWine、Russ 和 jstill 提供的解决方案,现在我已经陷入了这个配置问题。根据我的研究,人们似乎说您可以忽略此警告并继续,但尝试发送给 IRS 会导致以下错误。
配置中的元素无效。扩展“gzipMessageEncoding”不是从正确的扩展基类型“System.ServiceModel.Configuration.BindingElementExtensionElement”派生的。
下面是我的服务模型配置的片段。我的编码器与fatherOfWine 建议的位置不同,但我相信我的类型设置正确。
<system.serviceModel>
<client>
<endpoint address="[Endpoint Address]"
binding="customBinding" bindingConfiguration="BulkRequestTransmitterBinding"
contract="ACABulkRequestTransmitterService.BulkRequestTransmitterPortType"
name="BulkRequestTransmitterPort" />
<metadata>
<policyImporters>
<extension type="GZipEncoder.GZipMessageEncodingBindingElementImporter, GZipEncoder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</policyImporters>
</metadata>
</client>
<extensions>
<bindingElementExtensions>
<add name="gzipMessageEncoding" type="GZipEncoder.GZipMessageEncodingElement, GZipEncoder, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null" />
</bindingElementExtensions>
</extensions>
<bindings>
<customBinding>
<binding name="BulkRequestTransmitterBinding">
<gzipMessageEncoding innerMessageEncoding="textMessageEncoding" />
<httpsTransport />
</binding>
</customBinding>
</bindings>
</system.serviceModel>
更新 1:将类型字段中的第二个变量更改为GZipMessageEncoder
在同一位置引发新异常。
'无法加载为扩展 'gzipMessageEncoding' 注册的类型'Utilities.Gzip.GZipMessageEncodingBindingElement、GZipMessageEncoder、Version=4.0.0.0、Culture=neutral、PublicKeyToken=null'。'
仍然会尝试将 gzip 代码移动到它自己的项目中,如上面的链接所示。
更新 2:将 Gzip 库移动到自己的项目中似乎有助于解决运行时引发的异常。我已经继续并使用已更改的内容更新了上面的 App.config 文件。我现在的两种工作方法都处于同一点/问题!大声笑,但如果涉及到这个问题,它可能最好在另一个问题上。