Skip to main content
 首页 » 编程设计

c#之增加Asp.Net core中上传文件的大小

2024年06月03日10Free-Thinker

目前,我正在使用 Asp.Net Core 和 MVC6 需要上传文件大小不受限制。我已经搜索了它的解决方案,但仍然没有得到实际的答案。

I have tried this link

如果有人有任何想法,请帮忙。

谢谢。

请您参考如下方法:

其他答案解决了 IIS 限制。但是,从 ASP.NET Core 2.0 开始,Kestrel 服务器也施加了自己的默认限制。

Github of KestrelServerLimits.cs

Announcement of request body size limit and solution (quoted below)

MVC 指令

如果您想要更改特定 MVC 操作或 Controller 的最大请求正文大小限制,可以使用 RequestSizeLimit 属性。以下内容将允许 MyAction 接受最多 100,000,000 字节的请求正文。

[HttpPost] 
[RequestSizeLimit(100_000_000)] 
public IActionResult MyAction([FromBody] MyViewModel data) 
{ 

[DisableRequestSizeLimit] 可用于使请求大小不受限制。这有效地仅恢复了归因操作或 Controller 的 2.0.0 之前的行为。

通用中间件指令

如果请求未由 MVC 操作处理,则仍可以使用 IHttpMaxRequestBodySizeFeature 针对每个请求修改限制。例如:

app.Run(async context => 
{ 
    context.Features.Get<IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize = 100_000_000; 

MaxRequestBodySize 是一个可为 null 的 long。将其设置为 null 会像 MVC 的 [DisableRequestSizeLimit] 一样禁用限制。

如果应用程序尚未开始读取,您只能配置请求限制;否则会抛出异常。有一个 IsReadOnly 属性告诉您 MaxRequestBodySize 属性是否处于只读状态,这意味着配置限制为时已晚。

全局配置说明

如果您想全局修改最大请求正文大小,可以通过修改 UseKestrelUseHttpSys< 回调中的 MaxRequestBodySize 属性来完成。在这两种情况下,MaxRequestBodySize 都是可为 null 的 long。例如:

.UseKestrel(options => 
{ 
    options.Limits.MaxRequestBodySize = null; 

.UseHttpSys(options => 
{ 
    options.MaxRequestBodySize = 100_000_000;