本当に大きなファイルのアップロードを処理するようにIISを構成するにはどうすればよいですか?
-
03-07-2019 - |
質問
プラットフォーム:IIS 6、ASP.Net 2.0(.Net 3.5)、Server 2003。
ユーザーからファイルを受け取り、それらを処理し、結果を返すアプリケーションを構築しています。ファイルはHTTP POSTを使用してASP.Net Webフォームにアップロードされます。アプリケーションは、いくつかの大きなファイル(数百MB)を予期しています。
SWFUploadを使用して、素敵な進行状況バーでアップロードを実行していますが、アップロードアクセプターページを指す標準のHTMLフォームを使用してバイパスすると、まったく同じエラーが発生するため、問題の原因にはなりません。進行状況バーを使用する場合、アップロードは100%まで続き、その後失敗します。標準フォームでは、動作は同じように見えます。
現在、約150MBのファイルをアップロードする際に問題が発生しています。見つけることができるすべての設定を変更しましたが、それでも運はありません。
これまでに変更した内容の概要は次のとおりです。
Web.configで: system.web内にこれを追加しました:
<httpRuntime executionTimeout="3600" maxRequestLength="1536000"/>
machine.config内: 変更されたsystem.web内:
<processModel autoConfig="true" />
to:
<processModel autoConfig="true" responseDeadlockInterval="00:30:00" responseRestartDeadlockInterval="00:30:00" />
およびMetaBase.xml内: 変更:
AspMaxRequestEntityAllowed="204800"
to:
AspMaxRequestEntityAllowed="200000000"
アップロードが失敗すると、IISから404エラーが返されます。私のWebフォームは処理を開始しません。少なくとも、Page_Loadイベントに到達しません。そのハンドラーの開始時に例外をスローしましたが、大きなファイルではまったく実行されません。
小さなファイルでも問題なく動作します(最大5.5MBまでテストしました)。どのファイルサイズが制限なのか正確にはわかりませんが、クライアントがアップロードする必要がある最大のファイルではないため、制限は150MBを超える必要があることを知っています。
誰でも助けてもらえますか?
解決
UrlscanはすべてのWebサイトでアクティブであり、独自のリクエストエンティティの長さ制限があります。 UrlscanがグローバルISAPIフィルターであり、個々のWebサイトでは実行されていないため、Urlscanがサーバーで実行されていることを知りませんでした。
注:グローバルISAPIフィルターを見つけるには、IIS Adminの[Webサイト]フォルダーを右クリックし、[プロパティ]、[ISAPIフィルター]タブの順にクリックします。
他のヒント
(グーグル向けの注意):
IIS7の場合、web.configに以下を追加します(上に<system.serviceModel>
を追加しました):
<system.webServer>
<security>
<requestFiltering><requestLimits maxAllowedContentLength="262144000" /></requestFiltering> <!-- maxAllowedContentLength is in bytes. Defaults to 30,000,000 -->
</security>
</system.webServer>
この問題に遭遇したとき、このKB記事に従ってバッファサイズの制限を増やす必要がありました。 http://support.microsoft.com/kb/944886/en-us
これがASPに言及していることは知っていますが、ASP.NETでも同様に機能すると考えています。
編集:以下は、あなたの問題により関連するリンクであり、他のオプションを提供します:
http:// weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx
404およびPage_Loadの欠落:IISは、完全なPOSTがサーバー上にある場合にのみリクエストを処理できます。したがって、POSTが(サイズのために)失敗した場合、ページのイベントを起動できません。
NeatUpload http://www.brettle.com/neatupload をお試しください。 マニュアルから:<!> quot;デフォルトでは、NeatUploadはアップロードのサイズを直接制限しません。<!> quot;
Velodoc XP Edition を試すこともできます。これには、NeatUploadに比べて、 ASP.NET Ajax拡張。詳細については、 Velodoc Webサイトも参照してください。
言う:
しかし1536000は1.5MBだけですか?