4

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

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

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

4

2 回答 2

6

你不能!

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

如果您想在代码中读取请求长度,您可以通过 aHttpModuleglobal.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)));
    }
}

如果请求长度达到所需值,您可以将maxRequestLengthin设置web.config为最大值并在代码中调用工作人员的CloseConnection方法!

于 2012-12-25T18:33:53.240 回答
3

在快速谷歌之后,您似乎无法以编程方式进行操作。见这里

两种可能的解决方案:

  1. 使用本地化的 web.config 配置特定目录。
  2. 使用<location>web.config 中的元素来配置特定路径。
于 2012-12-25T18:23:42.883 回答