9

この問題が何百万回も投稿されているのを見てきましたが、どの解決策もうまくいきませんでした...だからここに行きます:

WCFサービスを呼び出すと、次のエラーが発生します。

フォーマッタは、メッセージを逆シリアル化しようとしたときに例外をスローしました。パラメータ http://BlanketImportService.ServiceContracts/2011/06:requestを逆シリアル化しようとしたときにエラーが発生しました。InnerExceptionメッセージは次のとおりです。'BlanketImport.BlanketImportRequestタイプのオブジェクトの逆シリアル化中にエラーが発生しました。XMLデータの読み取り中に、配列の最大長のクォータ(16384)を超えました。このクォータは、XMLリーダーの作成時に使用されるXmlDictionaryReaderQuotasオブジェクトのMaxArrayLengthプロパティを変更することで増やすことができます。1行目、位置44440。詳細については、InnerExceptionを参照してください。

両方のクライアントサーバーでを変更しreaderQuotas、bindingConfigurationタグを適用しました。

サーバー構成は次のとおりです。

<bindings>
  <basicHttpBinding>
    <binding name="BilagImportBinding" maxBufferSize="2147483647"
      maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
        maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </basicHttpBinding>
</bindings>

<services>
  <service name="BlanketImport">
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BilagImportBinding" bindingNamespace="http://BlanketImportService.ServiceContracts/2011/06" contract="BlanketImport.IBlanketImport">
    </endpoint>
  </service>
</services>

そして、クライアント構成:

  <bindings>
    <basicHttpBinding>
      <binding name="BilagImportBinding" maxBufferSize="2147483647"
        maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
          maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
      </binding>
    </basicHttpBinding>
  </bindings>
  <client>
    <endpoint address="http://localhost/BlanketImport/BlanketService.svc"
      binding="basicHttpBinding" bindingConfiguration="BilagImportBinding" contract="BlanketServiceReference.IBlanketService"
      name="BasicHttpBinding_IBlanketService" />
  </client>
4

3 に答える 3

20

解決策を見つけました...しかし、それでも非常に奇妙です!

バインディングタグからname属性を削除し、エンドポイントタグからbindingConfiguration属性を削除すると、すべて機能します。これは、basicHttpBinding構成がすべてのbasicHttpBindingエンドポイントのデフォルト構成であることを意味します

于 2011-09-20T08:07:22.067 に答える
2

名前付きバインディング構成を使用してWCFを使用してファイルをアップロードしようとしたときに、同じ問題が発生しました。これは、WCF 4.0および「簡略化された」構成の変更と関係があります(MSDNを参照) 。

参考:私はこの問題を解決するためにあらゆることを試みました。サービスのパラメーターはバイト配列だったので、それを削除してストリームを使用し、バッファーモードとストリーミングモードを変更してみました。また、名前付き構成では取得されなかったサイズを変更するために、明らかに150万の構成オプションを試してみました。

確かに非常に奇妙ですが、あなたの提案に取り組んでいます。

于 2012-02-01T03:11:27.253 に答える
0

名前付きバインディングがエンドポイントで使用されないという同様の問題がありました。私の問題は、サービス名のタイプミスでした。Livewireが言ったように、WCF 4 Simplified Configurationは自動的にエンドポイントを作成し、定義したエンドポイントはそれを上書きしませんでした。

于 2014-02-21T19:23:51.757 に答える