我正在通过IRS的WSDL集成IRS的A2A通道,目前在我的App.config中遇到了问题。当前,我的App.config的<gzipMessageEncoding/>
节点有一个警告:
元素“绑定”具有无效的子元素“ gzipMessageEncoding”。可能的元素列表:(...)。
我查看了fatherOfWine,Russ和jstill primarily here提供的解决方案,现在我陷入了这个配置问题。从我研究过的人看来,您可以忽略此警告并继续,但是尝试发送到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文件。我现在在两种当前工作方法中都处于同一点/问题!大声笑,但最好是在另一个问题上解决。
答案 0 :(得分:0)
这与我查看App.config时收到的警告相同。您似乎可以忽略该警告;这表明您的代码设置方式存在另一个问题。
下面是我的App.config的片段,其中包含适当的元素:
<system.serviceModel>
<customBinding>
<binding name="BulkRequestTransmitterBinding" sendTimeout="00:15:00">
<gzipMessageEncoding innerMessageEncoding="textMessageEncoding" />
<httpsTransport />
</binding>
<client>
<!-- Endpoints are setup by the import of the IRS Service so I will not include them here -->
<endpoint for transmission />
<endpoint for status />
<metadata>
<policyImporters>
<extension type="[ProjectName].GZipMessageEncodingBindingElementImporter, GZipMessageEncoder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</policyImporters>
</metadata>
</client>
<extensions>
<bindingElementExtensions>
<add name="gzipMessageEncoding" type="[ProjectName].GZipMessageEncodingElement, GZipMessageEncoder, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null" />
</bindingElementExtensions>
</extensions>
</customBinding>
</system.serviceModel>