контроллер задачи asyn c не перенаправляет на действие - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть асинхронный c контроллер действия задачи под названием Upload, который позволяет пользователю загружать PDF-файл. Файл PDF обрабатывается, а информация сохраняется в БД. После того, как контроллер обрабатывает PDF, мне нужно перенаправить его на просмотр View. В настоящее время после завершения загрузки контроллера я не получаю сервер, например, ошибка 404 и т. Д. c, он просто перенаправляет на то же представление загрузки, а не на представление подтверждения

Может кто-нибудь сказать мне, почему? Я уверен, что это как-то связано с асин c задачами, может быть, асин c задач нужно перенаправить другим способом?

Мои действия по загрузке и подтверждению в контроллере CompletedCamps

        public ActionResult Upload(int? id)
        {
            CompletedCamp completedCamp = db.CompletedCamps.Find(id);
            return View(completedCamp);
        }

        [HttpPost]
        public async Task<ActionResult> Upload(HttpPostedFileBase file, int? id)
        {
            CompletedCamp completedCamp = db.CompletedCamps.Find(id);

            string filename = Guid.NewGuid() + Path.GetExtension(file.FileName);
            string filepath = Server.MapPath(Path.Combine("~/Surveys/", filename));
            file.SaveAs(filepath);

            completedCamp.SurveyName = filename;
            db.SaveChanges();

            await AzureVisionAPI.ExtractToTextFile(filepath);
            ParseSurveyText parse1 = new ParseSurveyText();
            await Task.Run(() => parse1.ParseTextFile(completedCamp.RollNumber, completedCamp.OfficialSchoolName, completedCamp.Date, filepath));

            return RedirectToAction("Confirmation", "CompletedCamps", new { id = id });
        }

        [HttpGet]
        public ActionResult Confirmation(int? id)
        {
            var camp = db.CompletedCamps.FirstOrDefault(c => c.Id == id);
            return View(camp);
        }

1 Ответ

0 голосов
/ 01 апреля 2020

Если вы хотите перенаправить на Confirmation Controller и Confirmation Action, проверьте этот код вместо

return RedirectToAction("Confirmation", "CompletedCamps", new { id = id });

Используйте этот код

return RedirectToAction("Confirmation", "Confirmation", new { id = id });
...