Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用.NET Core 3.1上载大于100 MB的文件将导致400(错误请求)_C#_Asp.net Core 3.1 - Fatal编程技术网

C# 使用.NET Core 3.1上载大于100 MB的文件将导致400(错误请求)

C# 使用.NET Core 3.1上载大于100 MB的文件将导致400(错误请求),c#,asp.net-core-3.1,C#,Asp.net Core 3.1,我正在使用.NET Core 3.1创建文件上载 上载大于100 MB的文件时,出现错误: 413请求实体太大 经过各种调查,我通过以下设置避免了413错误: web.config: <?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="fals

我正在使用.NET Core 3.1创建文件上载

上载大于100 MB的文件时,出现错误:

413请求实体太大

经过各种调查,我通过以下设置避免了413错误:

web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <security>
        <requestFiltering>
          <!-- Handle requests up to 1 GB -->
          <requestLimits maxAllowedContentLength="1073741824" />
        </requestFiltering>
      </security>
    </system.webServer>
  </location>
</configuration>
Program.cs

        [Route("embed")]
        [HttpPost]
        [DisableRequestSizeLimit]
        [ProducesResponseType(StatusCodes.Status200OK)]
        [ProducesResponseType(StatusCodes.Status400BadRequest)]
        public ActionResult PostEmbed([FromForm] WebPptVoiceEmbedRequest request)
        {
            Log.NLog.Debug("[Get]:PostEmbed start");

            byte[] array;
            using (var stream = new MemoryStream())
            {
                request.File.CopyTo(stream);
                array = stream.ToArray();
            }

            Log.NLog.Debug("[Get]:PostEmbed end");
            
            return File(array, "application/vnd.openxmlformats-officedocument.presentationml.presentation", request.File.FileName);
        }
public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.ConfigureKestrel(options =>
                    {
                        options.Limits.MaxRequestBodySize = null;
                    })
                    .UseStartup<Startup>();
                })
                .ConfigureLogging(logging =>
                {
                    logging.ClearProviders();
                    logging.SetMinimumLevel(LogLevel.Debug);
                })
                .UseNLog();
然而,我仍然得到一个错误

400(请求错误

除了我设置的位置之外,还有其他位置可以设置文件上载容量吗?
这很混乱,因为在不同的地方有太多的大小设置

我想先解决它,
如果可能的话,我想知道如何在不使用web.config的情况下解决这个问题


最好的祝愿

多部分表单正文允许上载的文件大小有限制

UploadController.cs
中,您还需要更改该限制以使其正常工作:

比如:

[HttpPost]
[RequestFormLimits(MultipartBodyLengthLimit = 1073741824)]

我不确定web.config在asp.net core中是否有任何意义……你能显示操作的完整签名吗?你能提供一个最小的可复制的示例吗?谢谢你的评论。我写了所有操作。上传的文件按原样返回。对于web.config,我也不认为需要.net core。但有了这个添加,至少413错误消失。@kisetu,400表示错误请求。您从哪里获得文件,可以共享表单键值,还是共享客户端代码?@karney感谢您的评论。如果文件大小较小,进程将正常结束,不会出现任何问题,因此我认为这是服务器端问题。由于客户端是React,因此有许多源代码s、 因此,我认为在提问时发布会有障碍,因此我没有发布。现在返回的文件假定为PowerPoint文件,但其他文件格式将相同。文件的内容没有问题。只要超出大小。我还发布了部分发布的客户端源代码。谢谢您的回复!有一个名为MultipartBodyLengthLimit的设置。我不知道这一点,但当我实现它时,它工作得很好!我非常感谢您!但是,即使我添加此设置,如果我删除web.config,我也会收到一个413错误,还有另一个限制。有没有办法为控制器指定maxAllowedContentLength?只要s我使用IIS,我只能在web.config中指定它吗?请注意。就我在@Panagiotis Kanavos的评论中看到的参考URL而言,似乎IIS需要web.config。@kisetu只有在使用IIS进行部署时才需要。即使如此,您仍然需要配置web应用以允许大请求。是的,您可以根据c配置限制控制器与动作
[HttpPost]
[RequestFormLimits(MultipartBodyLengthLimit = 1073741824)]