【问题标题】:HTTP Error 413.1 - Request Entity Too Large Throw error rather than increase sizeHTTP 错误 413.1 - 请求实体太大抛出错误而不是增加大小
【发布时间】:2021-01-06 18:33:11
【问题描述】:

所以我收到错误“HTTP 错误 413.1 - 请求实体太大”,因为我正在尝试上传一个非常大的文件。当我收到此错误时,整个站点崩溃以显示该错误页面。在有关此问题的每个 SO 或在线帖子中,答案是仅增加 IIS 配置中允许的文件的大小。

我想保持默认大小,而只是向用户抛出一个错误,让他们知道他们的文件太大,而不会使网站崩溃并显示 HTTP 错误 413.1 页面。这可能吗?我正在考虑在我的视图模型中进行错误检查,但没有成功。

public class uploadVM: IValidatableObject
{
    public IFormFile upload { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        var size = upload.Length;
        if (size > 5242880)
        {
            yield return new ValidationResult("File upload too large");
        }
    }
}

【问题讨论】:

    标签: c# iis asp.net-core-mvc http-status-code-413


    【解决方案1】:

    我认为这是因为asp.net核心应用程序托管在IIS中,这会导致IIS首先验证上传的文件。如果太大,IIS会直接报错。我想到的解决办法是,可以用JS来判断上传文件的大小,如果文件太大,不要传给IIS中的应用程序。

     <script type="text/javascript">
    var files = document.getElementById('fileId').files;  
    var fileSize = 0;
    if(files.length!=0){
        fileSize = files[0].size;
    }
    if(fileSize >1048576){
        alert("The uploaded file is too large!");
        return false;
    }
     </script>
    

    【讨论】:

    • 所以你不相信可以在服务器端写一些东西来阻止一个太大的文件?
    • 是的,因为请求会先被IIS处理,然后再到Asp.net核心应用,所以我觉得如果请求在Asp.net核心处理就行不通了。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 2016-08-05
    • 2016-02-10
    • 2016-02-01
    • 2018-12-14
    • 1970-01-01
    相关资源
    最近更新 更多