1

WCF を使用する ASP.NET アプリケーションに特定の問題があります。データベースに、画像を保存するためのバイナリ フィールドを持つテーブルがあります。.net エンティティを使用して、イメージのバイナリ配列を問題なく読み書きできます。しかし、WCF を使用すると、いくつか問題が発生します。

Web アプリケーションの web.config を変更する (配列クォータを増やす) WCF を使用してバイナリ配列を読み取る際の問題は解決しましたが、WCF を使用してこの配列を書き込む際にはまだ問題があります。私はそのような種類のメッセージを持っています:

メッセージを逆シリアル化しようとしているときにフォーマッタが例外をスローしました: パラメータ http://tempuri.org/:questionを逆シリアル化しようとしているときにエラーが発生しました。InnerException メッセージは、「タイプ SL.DTO.QuestionDTO のオブジェクトのデシリアライズ中にエラーが発生しました。XML データの読み取り中に、最大配列長のクォータ (16384) を超えました。このクォータは、XML リーダーの作成時に使用される XmlDictionaryReaderQuotas オブジェクトの MaxArrayLength プロパティを変更することで増やすことができます。行 1、位置 55410.'。

これは私のWEBアプリケーションのweb.configです:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>        
        <binding name="BasicHttpBinding_IDAI_ExamenationService" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
          maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
          useDefaultWebProxy="true" >
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>        
      </basicHttpBinding>      
    </bindings>
    <client>
      <endpoint address="http://localhost:22840/DAI_ExamenationService.svc"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDAI_ExamenationService"
        contract="DAI_ExamenationServiceReference.IDAI_ExamenationService"
        name="BasicHttpBinding_IDAI_ExamenationService" /> 
    </client>    
  </system.serviceModel>

これはサービス アプリケーションの web.config です。

<system.serviceModel>    
    <behaviors>      
      <serviceBehaviors>        
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

この問題を解決するには、サービスの web.config のアクセス許可を変更する必要があると思いますが、どれが正しいかわかりません...

4

0 に答える 0