という構成値がありますmaxRequestLength
。構成ファイルでは、次のようになります。
<configuration>
<system.web>
<httpRuntime maxRequestLength="2048576" />
</system.web>
</configuration>
maxRequestLength
プログラムで値を設定するにはどうすればよいですか?
できません!
maxRequestLength
実際の への呼び出しの前にHttpWorkerRequestによって処理されます。つまり、要求がサーバーにヒットし、対応する asp.net ワーカーによって処理されたHttpHandler
後に、汎用ハンドラーまたはページが実行されます。ページ コードまたは HttpHandler を制御することはできません。maxRequestLength
リクエストの長さをコードで読み取りたい場合は、HttpModule
またはglobal.asax
ファイルを介して行うことができます。global.asax 内で行う方法は次のとおりです。
protected void Application_BeginRequest(object sender, EventArgs e)
{
IServiceProvider provider = (IServiceProvider)HttpContext.Current;
HttpWorkerRequest workerRequest = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));
if (workerRequest.HasEntityBody())
{
long contentLength = long.Parse((workerRequest.GetKnownRequestHeader(HttpWorkerRequest.HeaderContentLength)));
}
}
を最大値に設定しmaxRequestLength
、リクエストの長さが目的の値に達した場合、コードでweb.config
ワーカーのCloseConnectionメソッドを呼び出すことができます。
簡単なグーグルの後、プログラムでは実行できないようです。ここ を参照してください。
考えられる解決策は次の 2 つです。
<location>
特定のパスを構成するには、web.configの要素を使用します。