2016-12-05 4 views
-1

Я новичок в MVC и у меня есть контроллер, который имеет следующие действия:запрос отклонен, если действие контроллера MVC вызывается дважды одновременно

  • Индекс
  • FileUpload

Для FileUpload мы закачивать большие файлы, которые должны быть заполнены в базе данных, в этой функции происходит много вызовов базы данных (Create and Delete).

Я заметил, что, когда 2 пользователя звонят FileUpload одновременно, 1 из запросов отклоняется, и пользователю необходимо снова загрузить файл.
Как я могу исправить эту проблему?

+1

Показать ваш код. –

+1

Когда вы заявляете, что отклонено, какой код возвращается клиенту (400-е, 500-е годы)? –

+0

Привет, Алекс, 500, это происходит, когда я пытаюсь обновить записи базы данных (добавлять или обновлять), так или иначе, чтобы очереди запросов? –

ответ

1

Ваш код, который заполняет базу данных, вероятно, вызывает блокировки (блокировки одинаковых таблиц), и, скорее всего, создается исключение, вызывающее код статуса http 500. (Ваш код заполнения пытается изменить один и тот же номер строки, вызывая блокировку и вторую попытку сбой)

+0

И каково решение в этом случае? Есть ли очередь поставить очередь в mesaages? –

+0

Вы можете запрограммировать некоторую повторную попытку, если файл не работает, попробуйте обработать его снова и снова до достижения успеха. Или, если вы можете реализовать очередь на внутреннем сервере и обрабатывать файлы по очереди в виде сообщений очереди, используете ли вы облако Windows Azure (если вы можете загружать файлы в виде блоков и генерировать сообщение очереди для каждого из них, вы будет нужна роль рабочего лазурного листа, которая будет обрабатывать сообщения очереди один за другим, это дорогое решение, но надежное)? –

+0

Спасибо, Андрей, это помогло –

Смежные вопросы