.net6解除文件上传限制。Multipart body length limit 16384 exceeded

在C#中上传文件时如果不修改默认文件的上传大小会提示Multipart body length limit 16384 exceeded这个错误提示表明你的请求中的Multipart body长度超过了16384字节的限制。这通常意味着你正在尝试发送一个太大的请求体,可能是因为包含了太多数据或者太大的文件。要解决这个问题,你可以尝试减少请求体的大小,或者使用其他方法来传输大量数据,比如分块上传或压缩数据。另外,你也可以查看服务端的配置,看是否可以调整Multipart body长度的限制。

在.net6中可以 修改Program.cs文件,添加以下代码

ps:以下代码要添加到var app = builder.Build();之前

builder.WebHost.UseKestrel(options =>
{
    options.Limits.MaxRequestLineSize = 10 * 1024 * 1024;//HTTP 请求行的最大允许大小。 默认为 8kb
    options.Limits.MaxRequestBufferSize = 10 * 1024 * 1024;//请求缓冲区的最大大小。 默认为 1M
    //任何请求正文的最大允许大小(以字节为单位),默认 30,000,000 字节,大约为 28.6MB
    options.Limits.MaxRequestBodySize = 10 * 1024 * 1024;//限制请求长度

});

//上传文件限制
builder.Services.Configure<FormOptions>(x => {
    x.MultipartBodyLengthLimit = 10 * 1024 * 1024; // 10MB  
    x.MemoryBufferThreshold = 1024 * 1024; // 1MB  
});

然后在api方法上标注[DisableRequestSizeLimit]特性

在C#中,[DisableRequestSizeLimit]特性是用于禁用请求大小限制的。当应用程序使用ASP.NET Core处理请求时,可能会受到请求大小限制的影响,这可能会导致一些大型请求被拒绝或截断。使用[DisableRequestSizeLimit]特性可以禁用请求大小限制,允许应用程序处理大型请求而不受限制。这在处理大型文件上传或其他需要处理大型请求的情况下非常有用。

[HttpPost]
[DisableRequestSizeLimit]
public async Task<dynamic> UploadFileAsync()
{
    string fileName = "";string fullPath = "";string fileType = "";
    string Rotate = "0"; string Angle = "";
    try
    {
        if (Request.Form.Files.Count == 0) return Ok(new { ok = false, message = $"Upload Failed:没有文件." });

        var file = Request.Form.Files[0];

        if (file.Length < 1) return Ok(new { ok = false, message = $"Upload Failed:文件为空." });
        //代码逻辑
        }
        catch (Exception ex)
{
    Log.Error("Upload Failed.===" + "类型:" + fileType + "   文件名:" + fileName + "  失败原因:" + ex.Message );
    return Ok(new { ok = false, message = $"Upload Failed:{ex.Message}" });
}

你可能感兴趣的:(.Net6,net6解除文件上传限制)