Как сохранить ASP.NET бегущий

#c# #asp.net #.net #web

#c# #asp.net #.net #веб

Вопрос:

Итак, вот мой случай, я хочу создать веб-приложение с помощью ASP.Net , у меня есть простой пользовательский интерфейс, который имеет два текстовых поля и кнопку под названием «ВЫПОЛНИТЬ». два текстовых поля предназначены для имени и фамилии, пользователь может ввести значения и нажать «Выполнить».

У меня есть функция, которая обращается к базе данных Mongo и получает все документы, в которых имя и фамилия соответствуют тому, что запросил пользователь, затем я записываю результат в выходной файл «Лист Excel», затем эта функция «mongo» возвращается к функции «Button_Click», которая отправляется на диск и загружает этот excelлист и предоставить пользователю сохранить «окно», чтобы пользователь мог загрузить файл. Я тестировал это только на своей локальной машине и, похоже, работает нормально, теперь я не уверен, как это будет работать, когда я перейду на другую машину. но это не мой вопрос,

Вопрос в том, что я хочу добавить третье текстовое поле, в котором пользователь может ввести местоположение, в котором он / она хочет, чтобы файл Excel был сброшен. это может быть на третьем сервере, доступном с клиента и сервера, «где размещено веб-приложение». причина в том, что некоторые запросы могут занимать до 15 или 20 минут, и пользователь не хочет, чтобы его / ее веб-браузер работал все время. таким образом, после указания необходимой информации «Имя, фамилия» вместе с местоположением, в котором будет сохранен файл Excel, он может нажать «Выполнить» и закрыть веб-браузер. я предполагаю, что программа будет работать в фоновом режиме и выгрузит файл Excel в указанное место и отправит пользователю электронное письмо с уведомлением о том, что файл готов и был скопирован в нужное место, чтобы он / она мог проверить его позже. Выполнимо ли это? и как будет работать программа, когда пользователь закроет свой браузер?? нужны ли мне два разных проекта?

Комментарии:

1. После того, как пользователь нажмет на кнопку запуска, ваш сервер продолжит процесс до его завершения, сервер не знает и не заботится о том, ждет ли пользователь или закрыл свой браузер.

2. По крайней мере, вы можете потратить некоторое время на написание приятного для чтения вопроса. Хороший вопрос может помочь вам также найти ответ самостоятельно.

Ответ №1:

Дело в том, что вам нужно выполнить асинхронный вызов некоторой функции на вашем сервере, чтобы выполнить работу за вас, не позволяя пользователю ждать в браузере. Для этого вы можете написать службу WCF с асинхронной работой службы .Служба WCF будет размещена в службе Windows или IIS на сервере, реализация будет включать в себя необходимые функции (например, запрос к БД, создание файла Excel, запись файла на сервер и отправка электронной почты), все это должно входить в реализацию службы WCF, а из ASP.NET ты простонажмите кнопку, вы получите пользовательский ввод и асинхронно вызовете свою асинхронную функцию, которая определена в вашей службе WCF (через контракт, который вы предоставите)

Прочитайте это, чтобы узнать, как: Реализовать асинхронную операцию службы

Ответ №2:

Для такого длительного процесса в ASP.Net , мы обычно используем фоновую задачу, такую как hangfire.

Возможно, вы захотите прочитать, как запускать фоновые задачи в ASP.NET .