广州.NET培训
达内广州.NET培训中心

18589266248

热门课程

广州达内:ASP.Net Core中如何调整HTTP请求大小的几种方式

  • 时间:2017-09-29 15:20
  • 发布:广州.NET培训
  • 来源:dotNet跨平台

广州达内.Net培训的小编所知,一般的情况下,我们都无需调用HTTP请求的大小,只有在上传一些大文件,或者使用HTTP协议写入较大的值时(如调用WebService)才可能会调用HTTP最大请求值。

如果当HTTP请求值大于这个默认配置时,在执行Request.Body.ReadAsync方法时,就会引发IOException异常。如果这个异常未被捕获,在Kestrel服务器中输出HTTP状态码413(Request Entity Too Large), 而在HttpSys 中的HTTP状态码将是500(Internal Server Error)。

解决方案:在ASP.Net Core中这个配置可以基于全局和每次请求进行配置。

1.MVC的解决方案

MVC Core中为我们提供了两种特性配置请求大小:

RequestSizeLimit Attribute,对每个Action的请求大小进行配置。如下调整MyAction的请求大小值为100,000,000 字节.

[HttpPost]

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

}

DisableRequestSizeLimit Attribute可以同时应用到Controller和Action上,以禁用对HTTP请求的大小限制,也是说设置为无限制。

[HttpPost]

[DisableRequestSizeLimit]public IActionResult MyAction([FromBody] MyViewModel data){

}

2.请求上下文的解决方案

这个方案是一个全局配置方案,会影响到每个请求,当然也可以通过一些灵活的配置对单个请求进行修改,它通过IHttpMaxRequestBodySizeFeature 特征进行配置。如下在HttpContext中取得,当然也可以在ApplicationServices的IOC中获取。

HttpContext.Features.Get().MaxRequestBodySize = 100_000_000;

IHttpMaxRequestBodySizeFeature特征的MaxRequestBodySize属性是Nullable< long >类型,当设置为null时,类拟于MVC中的[DisableRequestSizeLimit]]。IsReadOnly属性说明此时上下文中的请求大小是否可以修改。

3.全局配置解决方案

通过两个宿主服务器Kestrel和HttpSys配置对请求大小进行修改,规则与前两种方案相同。

.UseKestrel(options =>

{

options.Limits.MaxRequestBodySize = null;

}

.UseHttpSys(options =>

{

options.MaxRequestBodySize = 100_000_000;

}

(以上内容来源于dotNet跨平台)

达内7天免费试听课程活动正式启动啦!限额报名,先报先得!

.Net培训

上一篇:干货|.Net程序员必备的三大工具
下一篇:广州.Net培训:.Net中的高性能应用

这些.net工具你都认识吗

广州达内.Net培训面试中常见问题

达内.net培训:共享充电宝的坎坷之路

.Net和Java培训哪个更好就业?

选择城市和中心
贵州省

广西省

海南省