ASP.NET 请求。文件为空,仅连接不良

问题描述 投票:0回答:1

我有一个文件上传页面,允许上传多个文档。

当我在良好的连接下使用它时,它工作得很好:对于每个单独的文件,我的控制器操作都会被调用,并且

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...
    }
});
javascript c# asp.net ajax asp.net-mvc
1个回答
0
投票

您可以尝试增加执行超时或最大请求长度(以允许上传更大的文件并使页面运行更长时间)。

<httpRuntime maxRequestLength="byte size limit" executionTimeout="timeout in seconds" />

请参阅有关 maxRequestLength 的 文档

最大请求大小(以千字节为单位)。默认大小为 4096 KB (4 MB)。

还有关于执行超时的文档

TimeSpan 值,指示请求允许的执行时间。

我相信executionTimeout的时间以秒为单位,所以如果你将其设置为300,那就是5分钟。

这样做可能会导致公共应用程序受到恶意用户的攻击,尝试上传非常大的文件,因此请注意。

您可以使用

<location href="path">
元素将更改范围限制到应用程序中的特定页面。请参阅 Microsoft 文档中有关位置 的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.