Сервер не может изменять файлы cookie после отправки заголовков HTTP + asp.net mvc + adfs outout - PullRequest
1 голос
/ 14 февраля 2012

Я реализовал функцию выхода из системы для приложения asp.net mvc. У меня есть кнопка с именем SignOut, и для ее нажатия я подключил код в классе Controller, как указано ниже:

public void SignOut()
                   {
                             try
                             {
                                      WSFederationAuthenticationModule.FederatedSignOut(null, null);                              
                             }
                             finally
                             {
                                      if (FederatedAuthentication.SessionAuthenticationModule != null)
                                                FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie();
                             }
                   }

Я получаю сообщение об ошибке в строке FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie();, как указано ниже:

Ошибка: сервер не может изменить файлы cookie после отправки заголовков HTTP.

Может ли кто-нибудь помочь мне по вышеуказанному вопросу.

Ответы [ 2 ]

0 голосов
/ 25 января 2017

Ваш контроллер должен вернуть EmptyResult . Например:

[HttpPost]
[Route("logoff", Name = "LogOff")]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
    WSFederationAuthenticationModule.FederatedSignOut(new Uri(FederatedAuthentication.WSFederationAuthenticationModule.Issuer), new Uri(FederatedAuthentication.WSFederationAuthenticationModule.Reply));

    return new EmptyResult();
}
0 голосов
/ 14 февраля 2012

FederatedSignOut удаляет SessionTokenCookie, а затем перенаправляет на параметр метода (который в вашем случае равен нулю).

Таким образом, предложение "finally" не требуется.

Он работает, когда вы его удаляете, верно?

...