2017-08-07 6 views
1

MVCとWCF経由でファイルをアップロードしようとしています。要求が大きすぎるとエンドポイントに到達できない(30 Mb +)

MVCプロジェクトのweb.configは大きなファイルを受け入れるように設定されています。

<binding name="BasicHttpBinding_IFile" closeTimeout="00:30:00" 
     openTimeout="00:30:00" sendTimeout="00:30:00" maxBufferPoolSize="2147483647" 
     maxReceivedMessageSize="2147483647" messageEncoding="Mtom" /> 

私のWCFを呼び出すと問題が発生します。エンドポイントは右のMVCプロジェクトにあり、WCFのweb.configファイルには、この結合があります:私は25Mbののファイルを送信することだし、それが働いている

<basicHttpBinding> 
    <binding name="FileUploadServiceBinding" 
      transferMode="Streamed" 
      messageEncoding="Mtom" 
      maxBufferPoolSize="2147483647" 
      maxBufferSize="2147483647" 
      maxReceivedMessageSize="2147483647" 
      receiveTimeout="00:30:00" 
      openTimeout="00:30:00" 
      closeTimeout="00:30:00" 
      sendTimeout="00:30:00"> 
     <security mode="None"> 
     <transport clientCredentialType="None" /> 
     </security> 
     <readerQuotas maxDepth="100" 
        maxStringContentLength="2147483647" 
        maxArrayLength="2147483647" 
        maxBytesPerRead="4096" 
        maxNameTableCharCount="16384" /> 
    </binding> 
    </basicHttpBinding> 

、私は30MB以上、私のプロジェクトのファイルをアップロードしようとすると、

"メッセージを受け入れることができるhttp://localhost:55010/FileService.svcにリスニングエンドポイントがありませんでした。これは、通常、間違ったSOAPアドレスまたはアクションによって引き起こされます。詳細をご覧ください。 「

ありがとう!

+0

サーバーの[MaxBufferSize](https://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpbinding.maxbuffersize(v = vs95).aspx)も設定しましたか?デフォルトは64kです。タイムアウトが発生する可能性はありますか?メッセージサイズを処理できない中間ノード(インバウンドプロキシサーバーやゲートウェイなど)があるとしたら、 –

+0

サーバのMaxBufferSizeもそれです。タイムアウトは30分です。私は解決策を見つけました。これはサーバーのhttpRunTimeです。今、プロパティMaxRequestLengthは "2147483647"とその動作です。ご協力ありがとうございます。 –

答えて

0

私は次の行で、サーバーのweb.configファイルに問題を修正:

<httpRuntime targetFramework="4.5" enableVersionHeader="false" maxRequestLength="2147483647" executionTimeout="1600" requestLengthDiskThreshold="2147483647" /> 

今私の問題は、私のストリームをmemorystreamにコピーしようとしているときにSystem.OutOfMemoryExceptionですが、このポストエスケープの外です。

ありがとう!

0

あなたはIIS Express、またはIISでサービスをホスティングしている場合、チャンスはフィルタリングモジュールが邪魔になっているリクエストのmaxAllowedContentLengthのデフォルト値です(これはデフォルトでは30000000です) 。

web.configファイルに次のようなものを追加することによって、それを増やしてみてください:

<system.webServer> 
    <security> 
    <requestFiltering > 
     <requestLimits maxAllowedContentLength="52428800" /> 
    <requestFiltering> 
    </security> 
</system.webServer> 
+0

問題は、構成されていないタグhttpRuntimeのmaxRequestLengthプロパティでした。今は2147483647に設定されており、web.configの問題は修正されています。ありがとうございました。 –

関連する問題