Ошибка при перенаправлении HTTPS «Сервер не может добавить заголовок после отправки заголовков HTTP» - PullRequest
3 голосов
/ 26 мая 2010

Мне нужно проверить, что наши посетители используют HTTPS.В BasePage я проверяю, приходит ли запрос по HTTPS.Если это не так, я перенаправить обратно с HTTPS.Однако, когда кто-то заходит на сайт и использует эту функцию, я получаю сообщение об ошибке:

System.Web.HttpException: сервер не может добавить заголовок после отправки заголовков HTTP.в System.Web.HttpResponse.AppendHeader (имя строки, строковое значение) в System.Web.HttpResponse.AddHeader (имя строки, строковое значение) в Premier.Payment.Website.Generic.BasePage..ctor ()

Вот код, с которого я начал:

// If page not currently SSL
if (HttpContext.Current.Request.ServerVariables["HTTPS"].Equals("off"))
{
    // If SSL is required
    if (GetConfigSetting("SSLRequired").ToUpper().Equals("TRUE"))
    {
        string redi = "https://" +
        HttpContext.Current.Request.ServerVariables["SERVER_NAME"].ToString() +
        HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"].ToString() +
        "?" + HttpContext.Current.Request.ServerVariables["QUERY_STRING"].ToString();
        HttpContext.Current.Response.Redirect(redi.ToString());
    }
}

Я также попытался добавить это выше (немного, я использовал на другом сайте для аналогичной проблемы):

// Wait until page is copletely loaded before sending anything since we re-build
HttpContext.Current.Response.BufferOutput = true;

Я использую c # в .NET 3.5 на IIS 6.

Ответы [ 2 ]

5 голосов
/ 26 мая 2010

Чад, Вы пытались завершить вывод при перенаправлении? Есть второй параметр, который вы установили бы в true, чтобы сообщить выходным данным о прекращении работы при выдаче заголовка перенаправления. Или, если вы буферизируете вывод, возможно, вам нужно очистить буфер перед выполнением перенаправления, чтобы заголовки не отправлялись вместе с заголовком перенаправления.

Brian

2 голосов
/ 26 мая 2010

Эта ошибка обычно означает, что что-то было записано в поток ответа до инициации перенаправления. Поэтому вы должны убедиться, что тест для https выполняется довольно высоко в функции загрузки страницы.

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