您当前的位置:首页 > 文章 > 上传文件时报错:"索引超出范围。必须为非负值并小于集合大小 "的解决方法

上传文件时报错:"索引超出范围。必须为非负值并小于集合大小 "的解决方法

作者:小象搬砖 时间:2025-11-13 阅读数:139 人阅读分享到:

在使用UEditor编辑器上传视频时由于视频文件太大导致上传失败,报错误码:Status Code:413 Request Entity Too Large,见下图:

在Web开发中,当使用C#进行ASP.NET开发时,遇到“413 Request Entity Too Large”错误通常是因为客户端发送的请求实体(即请求体)大小超过了服务器配置的限制。这个错误通常出现在使用ASP.NET Core或ASP.NET框架的Web应用中。

处理方法如下:

1. 修改Web.config(对于ASP.NET)
如果你使用的是ASP.NET(而非ASP.NET Core),可以在Web.config文件中调整请求的最大长度。例如:

<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="104857600" /> <!-- 例如,设置为100MB -->
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

2. 修改Startup.cs(对于ASP.NET Core)
如果你使用的是ASP.NET Core,可以在Startup.cs的Configure方法中设置Kestrel服务器或IIS的请求长度限制。例如:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseRouting();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
    // 设置最大请求长度限制(仅对Kestrel有效)
    app.Use(async (context, next) =>
    {
        context.Request.EnableBuffering(); // 确保请求体可以被多次读取
        await next();
    });
}

在ConfigureServices方法中,可以设置Kestrel的最大请求体大小:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.Configure<KestrelServerOptions>(options =>
    {
        options.Limits.MaxRequestBodySize = 104857600; // 例如,设置为100MB
    });
}

3. 在IIS中配置(对于ASP.NET Core部署在IIS上)
如果你是在IIS上部署ASP.NET Core应用,可以通过IIS管理器来设置:
打开IIS管理器。
选择你的网站。
在“功能视图”中,双击“请求筛选”。
在“请求筛选”设置中,找到“最大请求实体正文限制”,并设置所需的限制。例如,设置为100MB。
注意事项
增加请求体大小可能会导致服务器的内存使用增加,特别是在处理大量大型请求时。确保服务器有足够的资源来处理这些请求。
在生产环境中,考虑到安全性和性能,适度增加请求大小通常是必要的,但不应无限制地增加。根据实际需求和服务器能力合理设置。
对于文件上传等操作,除了设置请求大小限制外,还应考虑文件类型和文件大小的后端验证

本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com