javascript - ASP.NET Request.Files 为空,仅连接不良
问题描述
我有一个文件上传页面,允许上传多个文件。
当我将它与相当好的连接一起使用时,它工作正常:对于每个单独的文件,我的控制器操作被调用并且Request.Files
确实包含一个文件。
但是,当我使用开发人员工具(GPRS 速度)模拟不良连接时,当调用我的控制器操作时,Request.Files
它是空的。
我也尝试了中等连接(3G),我得到了两者的混合:成功上传了两个文件,我确实Request.Files
为每个文件输入了一个文件,而另外两个Request.Files
因空而失败。
这是正常行为吗?我想知道的是我的代码是否有问题,或者我是否在浪费时间试图修复无法避免的问题。
我看到的关于这个问题的所有问题都表明我应该multipart/form-data
为表单的enctype
属性指定,但这不是我的问题的解决方案,因为它在良好的连接下工作得很好。
谢谢你。
编辑 :
@Gunnarhawk,这就是我执行 AJAX 调用的方式:
return $.ajax({
url: '@Url.Action("GetUploadedFileList", "Process", new { claimId = @claimId })',
method: 'POST',
contentType: "application/json; charset=utf-8",
dataType: 'html',
cache: false,
data: dataJson, // Object as JSON text
processData: false,
traditional: true,
success: function (response) {
// Stuff...
},
error: function () {
// Stuff...
}
});
解决方案
您可以尝试增加执行超时或最大请求长度(以允许更大的文件上传和页面运行时间更长)。
<httpRuntime maxRequestLength="byte size limit" executionTimeout="timeout in seconds" />
以千字节为单位的最大请求大小。默认大小为 4096 KB (4 MB)。
TimeSpan 值,指示请求的允许执行时间。
我相信 executionTimeout 的时间是以秒为单位的,所以如果你将它设置为 300,那就是 5 分钟。
这样做可能会导致恶意用户通过尝试上传非常大的文件来攻击公共应用程序,因此请注意。
您可以使用该<location href="path">
元素将更改范围限定为应用程序中的特定页面。在 Microsoft Docs 中查看有关位置的更多信息。
推荐阅读
- javascript - 如何找到特定对象的祖先
- hibernate - Spring数据查询中子树异常的意外结束
- python-3.x - 从 yolo 中的网格预测边界框
- vb.net - 选择单选按钮和复选框以在标签中显示总计?
- javascript - DataTables - JS 函数看不到表变量
- javascript - 在 React Native/Redux 应用程序上重复发送 API 调用
- python - Python - if/else 以特定方式运行,但如果用户输入高于特定数字,则在第一个 if else 之后停止
- sql - Airflow - Bigquery 运算符未按预期工作
- post - ESP32 异步 Web 服务器 POST 方法不起作用
- java - Java map Set 到另一个 Set(使用 Model Mapper 或任何其他方式)