Mukesh Ghosh Ответов: 2

Файл процесса в фоновом режиме в веб-приложении


Всем Привет,
Мне нужна ваша помощь, чтобы выполнить нижеприведенную задачу.

У меня есть веб-приложение на C# & ASP.Net , теперь у него есть веб-форма, которая содержит кнопку.
Теперь, когда мы нажимаем эту кнопку, он должен начать обрабатывать большой файл, например копировать в базу данных, теперь моя цель состоит в том, чтобы продолжить процесс в фоновом режиме, хотя я вышел из системы или закрыл эту страницу.

Может ли кто-нибудь помочь мне в этом?

Что я уже пробовал:

Use Thread & async. but not working as per my desired.

2 Ответов

Рейтинг:
2

Richard Deeming

Скотт Хансельман опубликовал множество вариантов для этого еще в 2014 году:
Как запустить фоновые задачи в ASP.NET - Скотт Хансельман[^]

Если вы используете .NET 4.5.2 или более позднюю версию, вы можете просто использовать встроенный QueueBackgroundWorkItem метод:
Принимающая среда.Метод QueueBackgroundWorkItem (System.Web.Hosting) | Microsoft Docs[^]


BillWoodruff

+5

Рейтинг:
0

Afzaal Ahmad Zeeshan

Цитата:
когда мы нажимаем эту кнопку
Эта кнопка, скорее всего, является кнопкой веб-страницы, то есть на стороне клиента.
Цитата:
он должен начать обрабатывать большой файл, например копировать в базу данных
Что будет происходить с помощью вашего кода на стороне сервера. Ваш серверный код позаботится об этом, и я верю, что вы сделали эту часть.
Цитата:
теперь моя цель состоит в том, чтобы продолжить процесс в фоновом режиме, хотя я вышел из системы или закрыл эту страницу.
Ваш фоновый процесс все еще работает, если только не возникнет исключение или ошибка и не остановит сам процесс. Вы можете столкнуться с тем, что ваша клиентская сторона теперь не может видеть ход выполнения задачи. В решении 1 Вам предоставляется несколько опций, с помощью которых вы можете проверить, как работает фоновый процесс.

Обычный способ справиться с этим случаем—если бы мне пришлось иметь дело с этой проблемой—я бы создал пул задач, которые выполняются, и привязал их к сеансу пользователей. Затем покажите пользователям все задачи, которые в данный момент выполняются для их сеанса. В противном случае вам нужно держать сокет открытым, который продолжает нажимать вниз обновления или прогресс операций, и ваш интерфейс продолжает обновляться.

Одной из таких технологий является SignalR, которая может обновлять клиентскую сторону, как только что-то происходит или заканчивается на стороне сервера—подробнее об этом читайте здесь здесь[^].


BillWoodruff

+5

Afzaal Ahmad Zeeshan

Спасибо, Билл!