4

という構成値がありますmaxRequestLength。構成ファイルでは、次のようになります。

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="2048576" />
  </system.web>
</configuration>

maxRequestLengthプログラムで値を設定するにはどうすればよいですか?

4

2 に答える 2

6

できません!

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メソッドを呼び出すことができます。

于 2012-12-25T18:33:53.240 に答える
3

簡単なグーグルの後、プログラムでは実行できないようです。ここ を参照してください

考えられる解決策は次の 2 つです。

  1. ローカライズされた web.config を使用して、特定のディレクトリを構成します。
  2. <location>特定のパスを構成するには、web.configの要素を使用します。
于 2012-12-25T18:23:42.883 に答える