- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我确实遇到了红隼的一个奇怪问题。我无法上传超过红隼 MaxRequestBodySize 的多个文件。
当我试图阅读 this.Request.Form.Files.GetFiles() 时,预期的行为是抛出 BadHttpRequestException。我确实希望只收到一次对 Controller 操作的请求。
发生的事情是上传操作被点击了几次,浏览器显示消息“连接丢失”。我没有找到关于 Action 被调用的时间的模式。
Controller Action :
[HttpPost("upload")]
public IActionResult Upload()
{
try
{
var files = this.Request.Form.Files.GetFiles("files");
files.Select(async file => await this.SaveFile(file))
return this.RedirectToAction(nameof(VueController.FilesList),"Vue");
}
catch (BadHttpRequestException exp)
{
return new string[]
{
exp.Message
};
}
}
看法:
<form method="post"
enctype="multipart/form-data"
action="/api/v1/files/upload"
novalidate="novalidate">
<input type="file"
name="files"
multiple="multiple"
required="required"
accept=""
capture="capture" />
</form>
asp.net 核心日志:
info: Microsoft.AspNetCore.Server.Kestrel[17]Connection id "0HLDB9K94VV9M" bad request data: "Request body too large."Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException:Request body too large. atMicrosoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame.ThrowRequestRejected(RequestRejectionReasonreason) atMicrosoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.ForContentLength.OnReadStart()atMicrosoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.TryInit()atMicrosoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.d__24.MoveNext()--- End of stack trace from previous location where exception was thrown --- atSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() atSystem.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tasktask) atMicrosoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame`1.d__2.MoveNext()info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]Request finished in 7618.6319ms 413
最佳答案
您必须配置两件事:
在您的 Program.cs
public static IWebHost BuildWebhost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options => {
options.Limits.MaxRequestBodySize = null; // or a given limit
})
.Build();
services.Configure<FormOptions>(options => options.MultipartBodyLengthLimit = long.MaxValue); // or other given limit
[FromForm]
public IActionResult Upload([FromForm] IEnumerable<IFormFile> files)... // name must be same as name attribute of your multipart form
git clone https://github.com/alsami/example-fileupload-aspnet-core.git
cd example-fileupload-aspnet-core
dotnet restore
dotnet run --project src/file-upload-api/file-upload-api.csproj
关于.net - Kestrel MaxRequestBodySize 上传文件超限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50037706/
我确实遇到了红隼的一个奇怪问题。我无法上传超过红隼 MaxRequestBodySize 的多个文件。 当我试图阅读 this.Request.Form.Files.GetFiles() 时,预期的行
我有一个在 IIS 上运行的 ASP.NET Core Web API。在一次操作中,我设置了IHttpMaxRequestBodySizeFeature.MaxRequestBodySize至 26
我是一名优秀的程序员,十分优秀!