我在Asp.net core 2.0中创建了一个允许上传文件的网站。我很快遇到了30MB
上传限制的问题,并从服务器收到404
响应。低于此限制一切正常。
我在网上发现了许多像这样的解决方案:
Increase upload file size in Asp.Net core。我的问题是我无法使用此解决方案,而且在404
之后我仍然收到30MB
响应。
我的电话是ajax,就是这样:
function uploadMedia(isPhoto, files) {
var type;
if (isPhoto) {
type = "i";
} else {
type = "v";
}
var data = new FormData();
if (files.length > 0) {
for (idx = 0; idx < files.length; idx++) {
if (files[idx].size < 1074790400) {
data.append("fileImage" + idx, files[idx]);
} else {
BootstrapDialog.show({
type: BootstrapDialog.TYPE_WARNING,
title: "Validation Error",
message: "The maximum file size for images is 1GB. Please resize your image and upload again.",
buttons: [
{
label: "OK",
action: function(dialogItself) {
dialogItself.close();
}
}
]
});
}
}
$.ajax({
url: "/api/article/uploadfile/" + type,
type: "POST",
processData: false,
contentType: false,
dataType: false,
data: data,
success: function(jsonData) {
refreshUploadedImages(jsonData, isPhoto);
}
});
}
}
function rotateImageAnticlockwise(element) {
var id = $(element).attr("data-id");
var mediaData = getMediaData(id, true);
$.ajax({
url: "/api/article/rotateMedia/a/p/" + mediaData.fileId + "/" + mediaData.rotation,
type: "POST",
processData: false,
contentType: false,
success: function(jsonData) {
refreshRotatedImage(jsonData);
}
});
}
然后我的服务器端方法具有如下属性:
[HttpPost]
[RequestSizeLimit(1074790400)]
[Route("api/article/uploadfile/{mediaType}")]
public async Task<IActionResult> UploadFile(string mediaType)
谁能看到我做错了什么?这让我很生气!
答案 0 :(得分:8)
对于有同样问题的其他人,这就是答案。
Mark LaFleur的答案是正确的方向,但web.config缺少一个关键部分。
我得到了帮助,但这个网页解释了有关Asp.net Core中web.config文件的更多信息: ASP.NET Core Module configuration reference
要停止此错误,您需要创建一个包含以下内容的web.config文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<security>
<requestFiltering>
<!-- This will handle requests up to 50MB -->
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
答案 1 :(得分:1)
RequestSizeLimit
属性允许您在代码中定义最大请求大小,但仍受服务器本身支持的最大请求大小的限制。
在这种情况下,我怀疑您收到此错误:
HTTP 404.13 - Not Found
The request filtering module is configured to deny a request that exceeds the request content length.
此错误由ISS触发,因为呼叫超出了IIS&#39; maxAllowedContentLength
值(默认值为30,000,000
)。来自the documentation:
以下错误表示您的文件上传超出了服务器配置的
来自定义该值maxAllowedContentLength
。默认设置为30000000
,大约为28.6MB
。可以通过编辑web.config
:<system.webServer> <security> <requestFiltering> <!-- This will handle requests up to 50MB --> <requestLimits maxAllowedContentLength="52428800" /> </requestFiltering> </security> </system.webServer>