以编程方式设置maxRequestLength

时间:2012-12-25 18:11:13

标签: .net request

有一个名为maxRequestLength的配置值。在配置文件中,它看起来像这样:

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

如何以编程方式设置maxRequestLength的值?

2 个答案:

答案 0 :(得分:6)

你不能!

在调用实际maxRequestLength之前,HttpWorkerRequest处理

HttpHandler,这意味着在请求到达服务器之后执行通用处理程序或页面已由相应的asp.net worker处理。您无法控制页面代码中的maxRequestLength或HttpHandler!

如果要在代码中读取请求长度,可以通过HttpModuleglobal.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设置为其最大值,并在代码中调用worker的CloseConnection方法!

答案 1 :(得分:3)

快速谷歌后,似乎你无法以编程方式进行。 See here

两种可能的解决方案:

  1. 使用本地化的web.config配置特定目录。
  2. 使用web.config中的<location>元素配置特定路径。