ASP.NET请求,文件为空,只有连接错误

wdebmtf2  于 2023-11-20  发布在  .NET
关注(0)|答案(1)|浏览(93)

我有一个文件上传页面允许上传多个文件。
当我在一个相当好的连接上使用它时,它工作得很好:对于每个单独的文件,我的控制器操作被调用,Request.Files确实包含一个文件。
但是,当我使用开发人员工具(GPRS速度)模拟一个坏连接时,当我的控制器操作被调用时,Request.Files是空的。
我还尝试了一个中等连接(3G),我得到了两者的混合:两个文件成功上传,我确实有一个文件在Request.Files中为每个人,另外两个失败与Request.Files是空的。
这是正常的行为吗?我想知道的是我的代码中是否有错误,或者我是否在浪费时间试图修复无法避免的东西。
我看到的关于这个问题的所有问题都表明我应该为表单的enctype属性指定multipart/form-data,但这不是我的问题的解决方案,因为它在良好的连接下工作得很好。

编辑

@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...
    }
});

字符串

xpcnnkqh

xpcnnkqh1#

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

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

字符串
参见docs on maxRequestLength
最大请求大小(以KB为单位)。默认大小为4096 KB(4 MB)。
docs on executionTimeout
一个TimeSpan值,指示请求允许的执行时间。
我相信执行时间是以秒为单位的,所以如果你设置为300,那就是5分钟。
这样做可能会让公共应用程序受到恶意用户的攻击,通过尝试上传非常大的文件,所以要注意。
您可以使用<location href="path">元素将更改的范围限定到应用程序中的特定页面。请在Microsoft Excel中查看有关位置的详细信息。

相关问题