TempData[] работает на localhost, но не выводит сообщение на IIS сервере

Рейтинг: 0Ответов: 1Опубликовано: 10.04.2023

У меня есть контроллер, который принимает файл на вход. Если файла нет, то он выведет сообщение и произведет редирект на Index(). Дело в том, что код исправно работает на локальной машине, а при публикации на IIS не хочет выводить сообщение, причем остальной код отрабатывает верно. Код контроллера:

        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult LoadFile(HttpPostedFileBase fileExcel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    #region Проверка на валидность файла
                    if (fileExcel == null)
                    {
                        TempData["AlertMessage"] = "Файл не найден.";
                        return RedirectToAction("Index");  
                    }
                    #endregion
                ...

                }
            }
        }

Я немного погуглил, но решения которые я нашел мне не помогли. Предполагаю(уверен), что я не до конца понимаю особенности http протокола, ибо люди пишут, что дело в нем.

Ответы

▲ 0

Причина так и осталась неизвестной, но если поменять TempData на ViewBag, то это будет работать. TempData["AlertMessage"] = "..." -> ViewBag.Message = "..."

В .cshtml будет выглядеть:

@if (ViewBag.Message != null)
{
     <div class="error_area">
     @ViewBag.Message
     </div>
}