【问题标题】:IIS/ASP.NET: Issue with sending (POST) 1M bytes length requestsIIS/ASP.NET:发送(POST)1M 字节长度请求的问题
【发布时间】:2014-12-16 08:56:25
【问题描述】:

我在调试用于保存文件的 WebAPI 控制器时遇到了一个奇怪的案例。

我的控制器有一个发布数据的方法

    [HttpPost]
    [HttpPut]
    public async Task<HttpResponseMessage> Upload()
    {
        if (!request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }
        var provider = await request.Content.ReadAsMultipartAsync();
        MultipartFileData file = provider.FileData.FirstOrDefault();
        // this is the uploaded file: file.LocalFileName
    }

控制器的逻辑在这里并不重要。这里的关键点是控制器需要多部分内容。

现在,我从使用 jquery.fileupload 库的客户端通过 POST 方法发送文件。
我在控制器的 Upload 方法的第一行设置了一个断点,并从客户端发送了一个文件。断点消失。在所有文件上传到服务器之前它会熄灭。这是预期的行为,一切都很好。

现在的问题。我发送了一个大文件,断点没有关闭。文件正在上传(POST)并且控制器没有被调用!
更糟糕的是,在文件最终上传后,我在客户端上收到 404 Not Found。 我的网站位于 IIS 下的 localhost 上,使用 ASP.NET Web API 5.1.2 (.NET 4.5)。

我开始更改文件大小以选择工作正常时的大小。事实证明,这不是 1000000000(一百万字节)。如果请求的长度(数据和标头)为 1M 字节,则一切正常:断点消失并上传文件。如果请求的长度多 1 个字节,则无济于事:断点未关闭,文件似乎正在上传(即数据正在发送),但由于未调用控制器,因此不清楚上传的位置。

作为我在本地主机上的站点,我不敢相信它是由代理服务器引起的。

所以我的问题是发生了什么?发布 1M 字节请求有什么问题?

附言我知道 IIS 和 ASP.NET 对请求长度(4Gb 和 2Gb)的硬性限制——它们没有被超过。

【问题讨论】:

    标签: asp.net http iis asp.net-web-api


    【解决方案1】:

    IIS Manager 中单击您的站点并转到Configuration Editor - 您需要将maxRequestLength 更改为符合您要求的值。

    编辑: 第二名请求限制设置在这里:

    <system.webServer> 
      <security> 
        <requestFiltering> 
          <requestLimits maxAllowedContentLength="1000000000" /> <!-- change this -->
        </requestFiltering> 
      </security> 
    </system.webServer>
    

    【讨论】:

    • 感谢您提醒我有关 web.config 中的设置。我的错。实际上不是maxRequestLength,而是:
    • 是的,没错 - 我遇到了 sql server 报告 Web 控件的问题,因为它会生成大型内容。通常两者都需要更改。
    【解决方案2】:

    所以我完全忘记了 web.config 中的设置。事实证明,1M 是那里设置的限制:(

    <system.web>
        <httpRuntime maxRequestLength="1000000000"  />
    </system.web>
    <system.webServer>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="1000000000" />
            </requestFiltering>
        </security>
    </system.webServer>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      • 2014-09-18
      • 2017-10-16
      • 1970-01-01
      相关资源
      最近更新 更多