0

私はasp.net、c# 2010でプロジェクトを開発しています。その中で、mp3ファイルを.zip形式でダウンロードしようとしています。サイズが 80 ~ 150 MB であっても、ローカル PC では問題なく動作します。.zipファイルのサイズが間にある間はライブサーバーでも動作します10 to 20 MBが、今は間にあるファイルをアップロードし80 to 150 MBました. ファイルに最大タイムアウトを設定したため、ページが読み込まれている可能性がありweb.configます。

コードのダウンロード

if (File.Exists(virtualPath))
{
    FileInfo file = new FileInfo(virtualPath);
    Response.Clear();
    Response.ClearHeaders();
    Response.ClearContent();
    Response.ContentType = "application/zip";
    Response.AddHeader("content-disposition", "attachment;filename=\"" + Path.GetFileName(AlbumName) + "\"");
    Response.AppendHeader("content-length", file.Length.ToString());
    Response.WriteFile(virtualPath);
    //Response.End();
    HttpContext.Current.ApplicationInstance.CompleteRequest();
}

Web.config

<system.web>
      <customErrors mode="Off"></customErrors>
      <compilation debug="true" targetFramework="4.0" />
      <httpRuntime maxRequestLength="2000000000" executionTimeout="999999"/>
</system.web>

<system.webServer>
   <security>
       <requestFiltering>
                <requestLimits maxAllowedContentLength="2000000000" />
       </requestFiltering>
   </security>
   <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

理由はわかりません。このエラーを解決するのを手伝ってください。代替ソリューションがあれば、それは素晴らしいことです。

編集

if (File.Exists(virtualPath))
{
    FileInfo file = new FileInfo(virtualPath);
    Response.Clear();
    Response.ClearHeaders();
    Response.ClearContent();
    Response.ContentType = "application/zip";
    Response.AddHeader("content-disposition", "attachment;filename=\"" + Path.GetFileName(AlbumName) + "\"");
    Response.AppendHeader("content-length", file.Length.ToString());
    Response.Buffer = false; 
    Response.TransmitFile(virtualPath);
    //Response.WriteFile(virtualPath);
    //Response.End();
    HttpContext.Current.ApplicationInstance.CompleteRequest();
}

ありがとう

4

3 に答える 3

0

次の IIS 設定があります。

maxAllowedContentLength

オプションの uint 属性。

リクエスト内のコンテンツの最大長をバイト単位で指定します。

デフォルト値は 30000000 です。

30MB を超えるファイルを許可するように IIS 設定を変更する必要があると思います。

webconfig ではmaxRequestLength、kB で測定されます!

ファイル C:\Windows\System32\inetsrv\config\applicationHost.config を開き、次の行を見つけます。

overrideModeDefault プロパティを許可に設定します。したがって、行は次のようになります。

<section name="requestFiltering" overrideModeDefault="Allow" />

于 2013-08-28T06:31:15.183 に答える
0

WriteFile の前に次の行を追加してみてください。

Response.Buffer = false;
于 2013-08-28T06:24:57.660 に答える