写真をアップロードおよびダウンロードできる Web サイトを開発しています。ダウンロードは正常に機能し、問題はありませんが、その間、アップロードで 16 KB を超える写真で問題が発生し、「プロトコル例外: エラー 400 不正な要求」と表示されます。
これは、XmlDictionaryReaderQuotas の MaxArrayLength のサイズを大きくする必要があることを示していますが、既にそれを行っています。
私のwebConfigをお見せします:
クライアント:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IServiceImage" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="4194304" maxBufferPoolSize="4194304" maxReceivedMessageSize="4194304"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="4194304" maxStringContentLength="4194304" maxArrayLength="4194304"
maxBytesPerRead="4194304" maxNameTableCharCount="4194304" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
WCF:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IServiceImage" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="4194304" maxReceivedMessageSize="4194304"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="4194304" maxStringContentLength="4194304" maxArrayLength="4194304"
maxBytesPerRead="4194304" maxNameTableCharCount="4194304" />
<security mode="Message">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
</security>
</binding>
</basicHttpBinding>
</bindings>
何か案が?
編集:ファイルが16KB未満になるまでファイルをアップロードできますが、その値を処理して増加させる必要がある場所が見つかりません。
巨大なファイルのように聞こえますが、wcf に問題があるため、"encodeMessage" を MTOM に変更し、BasicHttpBindings から wsHttpBindings に移動する必要があります。ちなみに、まだ機能していませんが、コードに新しい問題が発生しています。くそ。
クライアント WebConfig:
<bindings>
<wsHttpBinding>
<binding name="wsHttpBinding_IService1" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="4194304" maxReceivedMessageSize="4194304"
messageEncoding="Mtom" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="4194304" maxStringContentLength="4194304"
maxArrayLength="4194304" maxBytesPerRead="4194304" maxNameTableCharCount="4194304" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
サービス WebConfig:
<bindings>
<wsHttpBinding>
<binding name="wsHttpBinding_IService1" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="4194304" maxReceivedMessageSize="4194304"
messageEncoding="Mtom" textEncoding="utf-8" useDefaultWebProxy="true">
<!--messageEncoding="Text" textEncoding="utf-8" maxBufferSize="4194304" transferMode="Buffered" -->
<readerQuotas maxDepth="4194304" maxStringContentLength="4194304"
maxArrayLength="4194304" maxBytesPerRead="4194304" maxNameTableCharCount="4194304" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="WcfService.FileService" >
<endpoint address="" binding="wsHttpBinding" contract="WcfService.IService1" />
</service>
</services>