【问题标题】:Using HttpClient to post large MultipartFormDataContent to IIS server web page使用 HttpClient 将大型 MultipartFormDataContent 发布到 IIS 服务器网页
【发布时间】:2021-10-03 16:18:50
【问题描述】:

我正在尝试使用 HttpClient 上传多达 2GB 的数据。 数据通过请求正文发送到读取它的 aspx 页面(可怕,我知道,但我无法更改。)

数据被放置在 MultipartFormDataContent 中并像这样发布:

var apiRequest = new MultipartFormDataContent();

apiRequest.Add(new StreamContent(file), fileName, fileName);

apiRequest.Headers.ContentDisposition = 
    new ContentDispositionHeaderValue("form-data") { Name = fileName, FileName = fileName };

HttpClient client = new HttpClient();
client.Timeout = TimeSpan.FromMinutes(30);

HttpResponseMessage response = null;

try
{
    response = client.PostAsync(apiEndPoint, form).Result;
    response.EnsureSuccessStatusCode();
    string responseBody = response.Content.ReadAsStringAsync().Result;
}
catch (HttpRequestException e)
{
    log.LogError($"logging here");
}

我尝试过的事情:

-HttpClient http 版本 1.0 代替默认

-HttpClient MaxRequestContentBufferSize

-web.config maxAllowedContentLength

-web.config AspMaxRequestEntityAllowed

-web.config maxRequestLength

目前,文件已正确添加到 httpClient,但我无法将它们发布到 Web 应用程序。我通过了高达 900MB 的内容,但任何超过此内容的内容都会简单地重定向到主页,并且我会从响应正文中的 Web 应用程序获取 HTML。

提前致谢!

【问题讨论】:

  • 所以当它达到 900 MB 或更大时,页面只是重定向到主页但在浏览器控制台中不显示任何信息?或者您的自定义日志错误中没有任何内容?您是否尝试在 MultipartFormDataContent 中设置 multipart/form-data?
  • 没错,它在没有信息和自定义日志的情况下重定向到主页。我刚刚尝试设置 multipart/form-data 但无济于事。

标签: c# asp.net iis-8 windows-server-2012-r2 .net-4.7.2


【解决方案1】:

经过一番努力,我们通过查看 IIS 日志找到了解决方案。

日志显示 Microsoft URLScan 工具阻止了请求。 当请求正文未通过扫描时,IIS 会直接将您重定向到主页而不会出现错误。

您必须在 urlscan.ini 文件中配置最大请求长度。 更多信息在这里:https://ajaxuploader.com/large-file-upload-iis-debug.htm

文件位于 C:\WINDOWS\system32\inetsrv\urlscan

【讨论】:

    猜你喜欢
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多