Неожиданный вход пользователя в систему при перенаправлении в ASP. NET MVC - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть 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, при котором сайт перестает работать до сих пор неизвестно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...