这里有新鲜出炉的精品教程,程序狗速度看过来!
ASP.NET 是. NET FrameWork 的一部分,是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术,它可以在通过 HTTP 请求文档时再在 web 服务器上动态创建它们。 指 Active Server Pages(动态服务器页面) ,运行于 IIS(Internet Information Server 服务,是 Windows 开发的 Web 服务器)之中的程序 。
本篇文章主要介绍了解决 ASP.NET Core Mvc 文件上传限制问题,具有一定的参考价值,有需要的可以了解一下。
一、简介
在 ASP.NET Core MVC 中, 文件上传的最大上传文件默认为 20MB, 如果我们想上传一些比较大的文件,就不知道怎么去设置了,没有了 Web.Config 我们应该如何下手呢?
二、设置上传文件大小
1. 应用程序级别设置
我们需要在 ConfigureServices 方法中添加如下代码,设置文件上传的大小限制为 60 MB。
- public void ConfigureServices(IServiceCollection services)
- {
- servicesConfigure<FormOptions>(options =>
- {
- optionsMultipartBodyLengthLimit = 60000000;
- });
- }
2.Action 级别设置
除了上面对全局进行设置外,我们也可以通过自定义 Filter 的方式,对单个 Action 进行控制,Filter 代码如下:
- [AttributeUsage(AttributeTargetsClass | AttributeTargetsMethod, AllowMultiple = false, Inherited = true)] public class RequestFormSizeLimitAttribute: Attribute,
- IAuthorizationFilter,
- IOrderedFilter {
- private readonly FormOptions _formOptions;
- public RequestFormSizeLimitAttribute(int valueCountLimit) {
- _formOptions = new FormOptions() {
- ValueCountLimit = valueCountLimit
- };
- }
- public int Order {
- get;
- set;
- }
- public void OnAuthorization(AuthorizationFilterContext context) {
- var features = contextHttpContextFeatures;
- var formFeature = featuresGet < IFormFeature > ();
- if (formFeature == null || formFeatureForm == null) {
- // Request form has not been read yet, so set the limits
- featuresSet < IFormFeature > (new FormFeature(contextHttpContextRequest, _formOptions));
- }
- }
- }
因为 ASP.NET Core MVC 中,与之前版本不同的是具体功能被封装在了各种 Feature(特征)中,HttpContext 上下文只是能各个特征进行管理的容器。这个 Filter 中就只将 Action 拦截,对 HttpContext 中的 FormFeature(负责表单提交功能)重新进行设置,从而达到限制具体 Action 上传文件大小的目的。
三、结语
本来感觉像是发现了一个文件上传的 BUG,已经确认在 1.0.1 版本中已经进行了修复。在 1.0.0 版本中,如果 Action 没有设置一个 IFromFile 作为参数,那么 Request.From.Files 将不能访问并且报出异常。
来源: http://www.phperz.com/article/17/0813/338170.html