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 のアクセス許可を変更する必要があると思いますが、どれが正しいかわかりません...