У меня есть ASP. NET MVC 4 веб-сайт под. NET 3.5. И пользователям нужно загружать туда файлы. Мы регистрируем их с помощью стандартных инструментов, в web.config
:
<authentication mode="Forms">
<forms loginUrl="~/SignIn" timeout="2000" />
</authentication>
все предельно просто. Проблема следующая: регулярно после загрузки и обработки файла на сервере (запись в базу данных, переименование, сохранение на диск - все успешно), вместо страницы, на которую я хочу перенести пользователя, он перенаправляет меня на SignIn
Файл загружается следующим образом:
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult SignModel(HttpPostedFileBase modelFile, string urlHash)
Тогда много кода и:
TempData["StartDownload"] = "/Download/" + Path.GetFileNameWithoutExtension(file) + ".mdl";
String url = Url.Action("IndexWithDownload", "FrontendModels") + urlHash;
return new RedirectResult(url);
Удаление urlHash
не помогает. Я скажу больше - проблема возникает с файлами размером до 1 МБ где-то один раз в 10-20 раз, с файлами размером более 1 МБ (не совсем точно!), Стабильными 9 из 10 раз.
Тогда метод IndexWithDownload
(сразу скажу, что удаление заголовка Refresh
тоже не помогло). Методы размещаются в разных контроллерах.
[Authorize]
public virtual ActionResult IndexWithDownload()
{
if (TempData["StartDownload"] != null)
{
ViewData["StartDownload"] = TempData["StartDownload"];
this.HttpContext.Response.AppendHeader("Refresh", "5; " + ViewData["StartDownload"]);
}
return View("Index");
}
И вместо Index
я получаю SignIn
...
В отладчике браузера вижу:
IndexWithDownload
с HTTP 302, а затем:
SignIn?ReturnUrl=%2fFrontendModels%2fIndexWithDownload
с HTTP 200
Просмотр Index
с контроллера FrontendModels
должен отображаться (с которого я позвонил SignModel
) , Но нет.
И это все. И я смотрю на страницу входа с красными глазами. Идеи закончились. Может быть, у вас есть мысли? Если я что-то пропустил, просто скажите.
Самое печальное, что под VS нет никаких проблем. Только на уже опубликованном сайте, что усложняет отладку.
ОБНОВЛЕНИЕ: возврат другого представления, перенаправление на Index
, создание метода void
, изменение максимального размера файла в web.config
нет помощи. Я в отчаянии. Кроме того, я протестировал файлы с порогом 900Kb и 1.1M, при котором сайт перестает работать до сих пор неизвестно.