IRS-A2A App.config中的无效子元素gzipMessageEncoding

时间:2018-12-18 18:11:50

标签: c# wcf irs

我正在通过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文件。我现在在两种当前工作方法中都处于同一点/问题!大声笑,但最好是在另一个问题上解决。

1 个答案:

答案 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>