【问题标题】:Server cannot modify cookies after HTTP headers have been sent + asp.net mvc + adfs signout发送 HTTP 标头后服务器无法修改 cookie + asp.net mvc + adfs signout
【发布时间】:2012-03-06 00:24:49
【问题描述】:

我已经为一个 asp.net mvc 应用程序实现了注销功能。我有一个名为 SignOut 的按钮,单击按钮时,我将代码挂接到 Controller 类中,如下所述:

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

我在FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie(); 行中遇到错误,如下所述:

错误:发送 HTTP 标头后服务器无法修改 cookie。

谁能帮我解决上述问题。

【问题讨论】:

    标签: asp.net-mvc adfs2.0


    【解决方案1】:

    FederatedSignOut 删除 SessionTokenCookie,然后重定向到方法参数(你的情况是 null)。

    所以“finally”子句不是必需的。

    删除后它会起作用,对吗?

    【讨论】:

    • 我删除了包含 if (FederatedAuthentication.SessionAuthenticationModule != null) FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie(); 的 finally 子句}。我创建了一个名为 Signout(即 Signout.cshtml)的自定义视图,但现在抛出了一个 jquery 错误:Object Expected with error numer:-2146823281。谁能帮我解决这个问题。
    • 我制作了一个示例 asp.net mvc3 应用程序并为其实现了 adfs 身份验证。现在我连接了 Signout 功能,发现应用程序运行良好。然后我在分析中发现项目中包含一个jquery插件文件(jquery.mobile-1.0.js),它正在创建要弹出的jquery错误。
    【解决方案2】:

    你的控制器应该返回一个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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 2012-01-07
      • 1970-01-01
      • 2012-01-20
      • 2015-12-05
      • 1970-01-01
      相关资源
      最近更新 更多