TransactionScope和Ajax调用返回错误响应

时间:2018-10-09 05:15:31

标签: ajax entity-framework model-view-controller transactionscope

我有一个Ajax调用,它调用特定的方法。

$.ajax({
    url: '@Url.Action("ExcelDataUpload", "ProjectDefinition")',
    type: "POST",
    headers: { "cache-control": "no-cache" },
    //data: { XLTransactionType: xltranstype, FilePath: filepath },
    data: { XLTransactionType: xltranstype, ExcelUploadData: exceljsonData },
    cache: false,
    success: function (data) {
        if (data != null && data.StatusID == 1) {
            ShowMessage(1, data.Message);                   
        }
        else {
            ShowMessage(0, data.Message);
        }
    },
    error: function (data) {
        ShowMessage(0, "Upload is not successful.Please try again!!!");
    }
});

此方法内部的操作是使用事务范围进行的

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew, TimeSpan.FromHours(1))) { 
    try { 
        using (objDb = new UPDEntities()) { } 
    } 

    if(id > 0) { 
        scope.Complete(); 
    } else { 
        scope.Dispose(); 
    }
}

这需要3-4分钟才能完成,但是在Ajax调用完成之前,它总是返回错误消息,如果数据较少,则返回成功。如何暂停Ajax调用,直到事务作用域完成其操作?

1 个答案:

答案 0 :(得分:0)

jquery Ajax异步true默认情况下有效。

http://api.jquery.com/jquery.ajax/

使用async false等待响应,我认为使用signalR更准确