0

我正在通过他们的 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 文件。我现在的两种工作方法都处于同一点/问题!大声笑,但如果涉及到这个问题,它可能最好在另一个问题上。

4

1 回答 1

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>
于 2018-12-19T21:18:30.283 回答