前言:在web项目的.net framework时文件上传时,自己常用一般处理程序接受上传文件,上传文件的大小限制是可以项目的webconfig里配置。   到core项目使用一般处理程序变成了中间件,但是使用中间件接受的时候,就遇到了上传大文件时,抛出的异常:

httpRequest.Form threw an exception of type Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException : Request body too large  ,说是请求内容太大了,接收不了,就查了查各种文章:

  先是在官网里看上传文件的文档:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/file-uploads?view=aspnetcore-3.0   里面有对上传文件请求大小限制的描述,但是其解决方案无法使用,很奇怪!

将上面的代码复制到项目中:

先是报错,无法使用!   可能这种解决方案不适用,或者在.net core 3.0的web_razor项目中无法使用!

  后来干脆放弃这种方案,还是从度娘里搜吧,看看其他道友有没有类似的错误,当然是换一个搜法:直接搜跟异常内容相关的,果然看到了类似的文章:

https://blog.csdn.net/farmwang/article/details/88826459

但是人家是加了UseKestrel方法,不过是放在了UseStartup方法的后面,跟官网的解决方案位置不一样,代码倒是一样的,这这这!!!   是官方错了吗???   擦擦擦,不管了,试试吧,结果发现不报错了,上传大文件也OK了,我草!  群众的力量才是伟大的!

下面贴出使用.net core 3.0 web_razor项目,借助中间件处理大文件上传的代码,供其他道友参考:

  1-Program.cs:

public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
} public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>().UseKestrel(options =>
{
//控制中间件允许的上传文件大小为:不限制
options.Limits.MaxRequestBodySize = null;
});
}).ConfigureLogging(logging =>
{
//https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-3
logging.ClearProviders();
logging.SetMinimumLevel(LogLevel.Debug);
}).UseNLog();
}

2-Startup.cs配置服务模块-注册中间件: 

//如果请求地址符合登录中间件,则将其发送到登录中间件处理
//管道中间件
app.MapWhen(context => context.Request.Path.ToString().EndsWith("/ajax/report.js"), appBranch => appBranch.UseMiddleware<ReportMiddleware>());

3-razor页面上传代码:

  

@*表单控件*@
<form method="post" enctype="multipart/form-data" action="#">
<div class="form-group">
选择文件:<input type="file" name="file" id="uploadFiles" multiple />
</div>
<button type="submit" class="btn btn-primary" id="btnSubmit">提交</button>
</form>
<script type="text/javascript">
$("#btnSubmit").click(function () {
var _$that = $(this);
_$that.attr('disabled', true); var formData = new FormData();
var files = $("#uploadFiles")[0].files;
for (var i = 0; i < files.length; i++) {
formData.append("file" + i, files[i]);
} var result = null;
//模拟form表单上传
$.ajax({
type: "POST",
url: "/ajax/report.js?action=oneUploadFiles",
data: formData,
//false代表只有在等待ajax执行完毕后才执行
async: true,
processData: false,
contentType: false,
success: function (json) {
try {
result = JSON.parse(json);
} catch (e) {
result = new Function("return " + json)();
}
alert(result);
},
error: function (e) {
console.log(e);
}
}); }); </script>

4-中间件接受文件:

HttpRequest httpRequest = httpContext.Request;
HttpResponse httpResponse = httpContext.Response;
IFormFileCollection fileColl = httpRequest.Form.Files;

.net core 3.0web_razor page项目_使用中间件接受大文件上传报错_httpRequest.Form threw an exception of type Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException_Request body too large的更多相关文章

  1. .NET Core 如何上传文件及处理大文件上传

    当你使用IFormFile接口来上传文件的时候,一定要注意,IFormFile会将一个Http请求中的所有文件都读取到服务器内存后,才会触发ASP.NET Core MVC的Controller中的A ...

  2. tomcat相关配置技巧梳理 (修改站点目录、多项目部署、限制ip访问、大文件上传超时等)

    tomcat常用架构:1)nginx+tomcat:即前端放一台nginx,然后通过nginx反向代理到tomcat端口(可参考:分享一例测试环境下nginx+tomcat的视频业务部署记录)2)to ...

  3. ASP.NET Core MVC如何上传文件及处理大文件上传

    用文件模型绑定接口:IFormFile (小文件上传) 当你使用IFormFile接口来上传文件的时候,一定要注意,IFormFile会将一个Http请求中的所有文件都读取到服务器内存后,才会触发AS ...

  4. 在 .NET Core项目中使用UEditor图片、文件上传服务

    在.NET Framework中使用UEditor时,只需要将UEditor提供的后端服务,部署为一个子程序,即可直接使用文件上传相关的服务,但是UEditor官方并未提供.Net Core的项目,并 ...

  5. SpringMVC案例3----spring3.0项目拦截器、ajax、文件上传应用

    依然是项目结构图和所需jar包图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVuamFtaW5fd2h4/font/5a6L5L2T/fontsi ...

  6. 在express项目中使用formidable & multiparty实现文件上传

    安装 formidable,multiparty 模块 npm install formidable,multiparty –save -d 表单上传 <form id="addFor ...

  7. 讲解开源项目:功能强大的 JS 文件上传库

    本文作者:HelloGitHub-kalifun HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  8. asp.net文件/大文件上传需要配置的项目整理

    HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求. 最可能的原因: •Web 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值. 可尝 ...

  9. qxx项目大文件上传

    1. 在做大文件上传的时候,要注意修改文件的配置,php.ini的配置,还有连接时间.这些东西都记不清了,明天需要问一下芳哥,然后遇到问题的时候就能自己解决了. 2. 然后就遇到一个很尴尬的问题:大文 ...

随机推荐

  1. vue中的$EventBus.$emit、$on 遇到的问题

    今天在项目中遇到的一个需求: 在一个选项卡功能的页面,出现的问题是,当点击选项卡的某个选项时,会同时加载整个选项卡的数据,本身产品就很大,数据很多,所以这个问题无法忽略: 仔细研究下发现,当刚进入页面 ...

  2. Erlang/Elixir精选-第2期(20191209)

    Spot The Discrepancies with Dialyzer for Erlang. 如何在大型Erlang项目中从零开始一步步践行Dialyzer. Which companies ar ...

  3. 鲲鹏云实验-.NET Core 3.0-开始使用

    [摘要] 介绍Ubuntu 18.04环境下.NET Core 3.0的安装配置.初始项目的生成和运行 1. 基础环境 2vCPUs | 4GB | kc1.large.2 Ubuntu 18.04 ...

  4. 商品分页查询 ego-prc 实现-easyui

    使用 easyui 的 DataGrid 控件实现商品的分页查询,DataGrid 控件提交分页所需要的 page 和rows 参数,后台响应包含总记录数 total 和需要显示的商品对象的集合 ro ...

  5. 第五章 初始jQuery

    jQuery与JavaScript: jQuery的用途: 访问和操作DOM元素: 控制页面样式: 对页面事件的处理: 方便地使用jQuery插件: 与Ajax技术的完美结合: jQuery的优势: ...

  6. 2017 CCPC秦皇岛 A题 A Ballon Robot

    The 2017 China Collegiate Programming Contest Qinhuangdao Site is coming! There will be  teams parti ...

  7. 洛谷 题解 P2312 【解方程】

    Problem P2312 [解方程] >>> record 用时: 1166ms 空间: 780KB(0.76MB) 代码长度: 2.95KB 提交记录: R9909587 > ...

  8. Java并发编程系列-(1) 并发编程基础

    1.并发编程基础 1.1 基本概念 CPU核心与线程数关系 Java中通过多线程的手段来实现并发,对于单处理器机器上来讲,宏观上的多线程并行执行是通过CPU的调度来实现的,微观上CPU在某个时刻只会运 ...

  9. ARTS-S CentOS 7 ssh相关

    修改默认端口 vi /etc/ssh/sshd_config 把Port的注释删除了改成自己想要的值 重启service sshd restart 或者sudo /etc/init.d/ssh res ...

  10. 解决老浏览器不支持ES6的方法

    转载地址:http://www.rockyxia.com/?p=669 为什么ES6会有兼容性问题? 由于广大用户使用的浏览器版本在发布的时候也许早于ES6的定稿和发布,而到了今天,我们在编程中如果使 ...