0

WCFを使用して、選択したファイルをサーバーにアップロードするコードを書いています。私は.Net 4.0を使用しています。ファイルアップロードコントロールを備えた1つのaspxページがあります。ユーザーがファイルを参照して [保存] をクリックすると、これらのファイル (バイト単位で読み取られてから base64 に変換) がセッション オブジェクトに保持されます。Upload というボタンがもう 1 つあります。アップロードをクリックすると、WCF サービスを呼び出してセッションからオブジェクトを渡します。以下は、クライアント側からの私のバインディング構成です

<i>   
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_DefaultService" closeTimeout="00:20:00" openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:20:00" bypassProxyOnLocal="false" 
             transactionFlow="false" hostNameComparisonMode="StrongWildcard" 
             maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />

      <reliableSession ordered="true" inactivityTimeout="00:20:00" enabled="false" />
       <security mode="Message">
        <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" establishSecurityContext="true" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
</i>

サーバーからの次の1つ

<i>
<wsHttpBinding>
<binding name="WSHttpBinding_DefaultService" closeTimeout="0:20:00"
  openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:20:00"
  bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
  maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
  messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
  allowCookies="false">
  <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
    maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
  <reliableSession ordered="true" inactivityTimeout="00:20:00"
    enabled="false" />
  <security mode="Message">
    <message clientCredentialType="Windows" negotiateServiceCredential="true"
      algorithmSuite="Default" />
  </security>
</binding>
</wsHttpBinding>
</i>  

また、私はhttpruntimeに変更を加えました

<i> <httpRuntime requestValidationMode="2.0"  executionTimeout="90" maxRequestLength="2097151"/></i>

問題は、合計サイズが 2.5 MB を超える複数のファイルを選択しようとするたびに、オブジェクトが WCF に転送されず、エラーがスローされることです。

<i>The underlying connection was closed: A connection that was expected to be kept alive was closed by the server. >>>> The underlying connection was closed: A connection that was expected to be kept alive was closed by the server. >>>> Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. >>>> An existing connection was forcibly closed by the remote host >>>>     </i>

だから私は何をする必要がありますか?私は wsHttpBinding で解決策を見つけようとしていますので、何か提案はありますか?

4

1 に答える 1