Сбой ASP.NET Web API при одновременных вызовах AJAX из расширения Chrome - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть веб-сайт (ASP.NET MVC), куда я могу загрузить два видео и расширение Chrome, которое может вызывать ASP.NET Web API.И веб-сайт, и веб-API, работающие под IIS из Visual Studio, запускаются без опции отладки.

Теперь я загрузил два видео на свой веб-сайт ASP.NET MVC, а расширение получило два URL-адреса загруженных видео.Расширение настроено так, чтобы вызывать одно и то же действие из контроллера Web API, используя два вызова AJAX для двух видео отдельно.Оба вызова AJAX заключены в setInterval, один интервал равен 1000 мс, а другой - 2000 мс.

Иногда после 2-4 вызовов из ajax Web API происходит сбой в IIS, и в то же время в консоли Chrome я вижу одну ошибку для net::ERR_CONNECTION_RESET и другие ошибки net::ERR_CONNECTION_REFUSED.

Я попытался отладить веб-API и поместить свой код действия в блок try-catch, но это не помогло, и отладка сбоев сеанса без каких-либо сообщений об исключениях или ошибки с кодом возврата -1.Я также пытался найти похожие вопросы, но ничего не нашел.

Ajax:

setInterval(function () {
$.ajax({
            url: requestApiVideo1,
            type: "GET",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: succFunc1,
            error: errFunc
        });
}, 1000);

setInterval(function () {
$.ajax({
            url: requestApiVideo2,
            type: "GET",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: succFunc2,
            error: errFunc
        });
}, 1000);

Это определенно не то, что я ожидал увидеть, когда я вызываю Web API из простогоАякс.Я ожидаю, что веб-API будет по крайней мере помещать параллельные запросы Ajax в очередь.

Редактировать: Это то, что я нашел в Просмотрщике событий:

Faulting application name: iisexpress.exe, version: 10.0.14358.1000, time stamp: 0x574fb9e6.
Faulting module name: ucrtbase.dll, version: 10.0.17134.619, time stamp: 0xf74cf274
Exception code: 0xc0000409
Fault offset: 0x000000000006ca78
Faulting process id: 0x31d8
Faulting application start time: 0x01d4ef27c034cf15
Faulting application path: C: \ Program Files \ IIS Express \ iisexpress.exe
Faulting module path: C: \ WINDOWS \ System32 \ ucrtbase.dll
Report Id: 76c3023e-f31b-412e-9c5c-07e9bb1180ba
Faulting package full name: 
Faulting package-relative application ID:

ОБНОВЛЕНИЕ: Мой C #Код действия веб-API вызывает методы из C ++ dll.

1 Ответ

0 голосов
/ 20 апреля 2019

Я обнаружил утечку памяти в моем модуле C ++ dll. Это был метод записи, который не освободил должным образом выделенную память:

extern "C" __declspec(dllexport)
int writeToFile(const char * file1, const char * file2, const char * id) {
    WavFile* originalFile = wav_file_api().init(file1, READ, 1024);

    WavFile* signedFile = wav_file_api().init(file2, WRITE, 1024);

    int16_t buffer[1024];

    size_t read_size;

    char sign[17];
    sprintf_s(sign, 16, "%s", id);
    sign[16] = 0;

    signedFile->header = originalFile->header;

    fwrite(&(signedFile->header), sizeof(WavHeader), 1, signedFile->file);

    while ((read_size = wav_file_api().read_next_chunk(originalFile, buffer))) {
        apply_sign(buffer, sign);
        wav_file_api().write_next_chunk(signedFile, buffer);
    }

    wav_file_api().del(signedFile);

    wav_file_api().del(originalFile);

    return 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...