0

写真をアップロードおよびダウンロードできる 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>
4

1 に答える 1

0

Buffered の代わりにストリーミング サービスを使用するシナリオのように思えます。

http://msdn.microsoft.com/en-us/library/ms733742.aspx

偶然にも、私は自分自身を実装することに取り組んでいます。

于 2012-12-21T20:48:51.603 に答える