Вызовы TransactionScope и Ajax возвращают ответ об ошибке - PullRequest
0 голосов
/ 09 октября 2018

У меня есть вызов 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 голосов
/ 09 октября 2018

jquery Ajax async true работает по умолчанию.

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

используйте async false для ожидания ответа, я думаю, что более точно использовать signalR

...