我正在通过IRS的WSDL集成A2A通道,目前在我的App.config中遇到了一个问题。目前,我的Appconfig的<gzipMessageEncoding/>
节点有一个警告:
元素"binding"具有无效的子元素"gzipMessageEncoding"。预期的可能元素列表:(…(.
我主要在这里查看了由fatherOfWine、Russ和jstill提供的解决方案,现在我遇到了这个配置问题。根据我的研究,人们似乎认为你可以忽略这一警告并继续,但试图发送给美国国税局会导致以下错误。
配置中的元素无效。扩展"gzipMessageEncoding"不是从正确的扩展基类型"System.ServiceModel.Configuration.BindingElementExtensionElement"派生的。
下面是我的服务模型配置的片段。我把编码器放在了一个不同于父亲OfWine建议的地方,但我相信我有正确的类型设置。
<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>
UPDATE 1:将type字段中的第二个变量更改为GZipMessageEncoder
会在同一位置引发新的异常。
无法加载为扩展"gzipMessageEncoding"注册的类型"Utilities.Gzip.GZipMessageEncodedingBindingElement,GZipMessage编码器,版本=4.0.0.0,区域性=中性,PublicKeyToken=null">
仍将尝试将gzip代码移动到自己的项目中,如上面的链接所示。
UPDATE 2:将Gzip库移到自己的项目中似乎有助于解决运行时引发的异常。我已经继续更新了上面的App.config文件,其中包含了更改内容。我现在在我目前的两种工作方法上都处于同一点/问题!哈哈,但如果是这样的话,最好换一个问题。
这与我查看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>