У меня есть действие контроллера UpdateSite (), просмотр этого действия является для меня ручным способом запуска (обычно автоматизированного) процесса сбора данных.
Это довольно простой процесс, который имеет следующий рабочий процесс:
- Выполнение нескольких веб-запросов данных с использованием веб-API
- Разобрать эти данные, чтобы извлечь все, что мне может понадобиться
- Если некоторые данные являются новыми и актуальными, сохраните их в БД (используя linq to sql)
- (опционально) отправить некоторые данные обратно в API, чтобы он знал, что я только что сделал.
Вот надуманный пример метода:
public ActionResult UpdateSite(string key)
{
if(key == KEY)
{
log4net.Config.XmlConfigurator.Configure();
ILog log = LogManager.GetLogger("Default");
string tUserName = ConfigurationManager.AppSettings["UName"];
string tPassword = ConfigurationManager.AppSettings["UPassword"];
ApiService apiSvc = new ApiService(tUserName, tPassword, new InterpreterFactory(),
log);
ControlPanel controller = new ControlPanel(Service, apiSvc, new DefaultAppStatusService(), log);
CaptureResults results = controller.Capture();
controller.EnrichData(results, new EnrichmentFactory(log));
var newData = controller.PersistData(results);
controller.ReplyWithNewData(newData);
}
return View();
}
Все это, кажется, работает нормально, оно делает свое дело, извлекает необходимые данные из внешнего API, записывает их в базу данных и т.д.
Проблема в том, что при "return View ()" страница не загружается полностью в браузере, а сайт постоянно зависает, заставляя меня перезапустить сервер dev. Все, что есть на странице, - это немного текста.
Я понятия не имею, что происходит. Кто-нибудь еще сталкивался с чем-то подобным? Есть идеи, что бы это могло быть?