ASP. NET MVC Невозможно перенаправить после заголовков HTTP - PullRequest
0 голосов
/ 29 мая 2020

Я получаю это предупреждение в IIS, может ли оно быть связано с запросом файлов cookie из браузера или как я использую Response.Redirect? Из некоторых исследований я вижу предложение о том, что мне нужно добавить Response.Buffer = true; Это правильно?

Код

    public ActionResult GetTemplateById(string TemplateId)
    {    
        string loginUrl = ConfigurationManager.AppSettings["loginUrlCottTemplateId"];
        Request.Cookies.Add(new HttpCookie("ev", "sJlp+HNulad4GaX2RCjjlQ=="));
        if (Request.Cookies["customerguid"] != null)
        {
            HttpCookie cookie = Request.Cookies["customerguid"];
            string cookieValue = cookie.Value;
            cookieValue = cookieValue.Replace("%2D", "-");
        }
        else
        {
            Response.Redirect(loginUrl + TemplateId);

        }

        if (!AuthenticationRep.IsUserValid(Request))
        {
            return Redirect(storeProductLink);

        }
        var memoryStream = new System.IO.MemoryStream(fm.FileData);
        return new FileStreamResult(memoryStream, "application/pdf");
    }

Исключение IIS

Сообщение об исключении: невозможно перенаправить после отправки заголовков HTTP.

Информация о потоке:
Идентификатор потока: 213
Имя учетной записи потока: IIS APPPOOL. NET v4.5
Выдает себя за другое лицо: False

Трассировка стека:

в System.Web.HttpResponse.Redirect (String url, Boolean endResponse, Boolean постоянный)

1 Ответ

0 голосов
/ 29 мая 2020

В вашем приложении ASP. NET MVC вы перенаправляете с использованием Response.Redirect(someurl).
При использовании в приложении ASP. NET Web Forms любой код после Response.Redirect(someurl) никогда не будет выполнен. Однако, когда вы используете то же самое в ASP. NET MVC, выполнение кода будет продолжаться даже после отправки ответа перенаправления. Чтобы узнать, почему, от go до this .

Ваш код пытается перенаправить два раза в том же ActionResult, через -

Response.Redirect(loginUrl + TemplateId); 

и

return Redirect(storeProductLink);    

, и я считаю, что это вызывает эту ошибку.

Пожалуйста, измените Response.Redirect(loginUrl + TemplateId) на return Redirect(loginUrl + TemplateId) и проверьте, решает ли это вашу проблему.

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