执行ajax文件上传时超时

时间:2016-01-28 00:32:03

标签: jquery asp.net-mvc-4 knockout.js iis-8 windows-server-2012-r2

我让用户选择要上传的单个文件。但上传永远不会在一个非常奇怪的情况下完成。

工作用例:页面完成加载后,用户选择一个文件并上传,它总是上传。

不工作用例:页面完成加载后,用户会在屏幕上盯着一两分钟,然后选择要上传的文件,上传几乎永远不会完成。我们不知道凝视有多长时间,但通常会做2到5分钟。该问题仅出现在Windows 7计算机上的IE 11中。在同一台机器上,Chrome和Firefox工作正常。 IIS Web服务器不是负载平衡的,但它也发生在负载平衡环境中。当上传永远不会完成时,控制器期望POST永远不会收到请求,IIS日志也永远不会收到POST请求。

更新 我发现开发Web服务器是单个服务器,但它实际上是在负载平衡环境之后,因为我们的QA环境有两个Web服务器并且负载平衡。据说,出现问题是由负载均衡器引起的。因为如果文件按节点名称POST到服务器URL,则上载有效。但是如果POST到负载均衡器,则会失败。我会看看我的网络人员是否可以找到解决方案。我不相信这是代码问题,或者我错了吗?

var FormEdit = function () {
    var that = {};

    that.upload = function () {
        var data = new FormData();
        var fileInput = $('#fileInput')[0];
        var file = fileInput.files[0];
        data.append(file.name, file);

        $.ajax({
            type: 'post',
            dataType: 'json',
            url: url,
            data: data,
            processData: false,
            contentType: false,
        }).fail(function () {
        }).then(function (data) {
        }).always(function () {
        });
    };
};

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,但不认为这是最好的方式。

在我执行HTTP POST以上传文件之前,我执行HTTP GET,然后执行HTTP POST。到目前为止,它总是以这种方式工作。

我的网络人员说IE 11的连接超时为1分钟。如果连接超时,则您运气不好,但要再次为要上载的文件创建新连接。