asp.net - Request.Form 抛出异常

标签 asp.net iis asp.net-web-api asp.net-core httpcontext

我正在制作 ASP.NET Core Web 应用程序,我正在通过 HttpContext 从 javascript 文件上传 PDF 文件。因此,当我尝试在服务器端加载文件时,使用 Request.Form.File,Form 抛出 System.IO.InvalidDataException 类型的异常。表单消息说:“超过多部分正文长度限制 16384”。我试图编辑 web.config 文件以增加该限制,但消息始终相同。 有什么我遗漏的或我看错了边吗?

谢谢。

最佳答案

定义这个属性:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, 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 = context.HttpContext.Features;
        var formFeature = features.Get<IFormFeature>();

        if (formFeature == null || formFeature.Form == null)
        {
            // Request form has not been read yet, so set the limits
            features.Set<IFormFeature>(new FormFeature(context.HttpContext.Request, _formOptions));
        }
    }
}

并将此属性添加到您的操作方法中,看看会发生什么:

[RequestFormSizeLimit(valueCountLimit: 2147483648)]
[HttpPost]
public IActionResult ActionMethod(...)
{
  ...
}

关于asp.net - Request.Form 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38394410/

相关文章:

c# - web api 和 web api 2 之间的 PushStreamContent 有什么不同?

c# - WebApi 创建无法从 Xamarin.Android 运行的用户

asp.net - Silverlight 页面生命周期问题与异步事件处理程序

xml - 使用 Web Deploy 3.0 在 IIS 中显示下拉列表

c# - EndpointNotFoundException - 404 - 通过 Visual Studio 在 IIS 中通过 HTTPS 托管 WCF 服务

javascript - 哪个版本的 Bing API 使用 OpenLayers? (如果有的话)

c# - 在事件触发 SqlDependency 后获取 Context.User.Identity.Name Null

html - 样式 asp :Checkboxlist in bootstrap panel

asp.net - 防止 IIS Url Rewrite 模块修改 HTTP 303/307 响应

asp.net-mvc-4 - 我可以向 ApiController 添加操作作为扩展方法吗?