2011-06-02 104 views
1

我正在整合2个ASP.Net应用程序上的单一标志。对于这个问题,我有一个由主应用程序调用的Web服务。当用户登录时,此Web服务在我的第二个应用程序中对用户进行身份验证,并将需要传递给客户端浏览器的身份验证Cookie带回,以便他可以自由导航并登录到这两个应用程序中。ASP.NET将Cookie发送到客户端浏览器

我正打算使用HttpContext.Current.Response.Cookies.Add(饼干),以提供新的Cookie,但这样似乎没有cookie添加什么那么不工作...

关于可能出错的任何想法?

这里是我的代码:

var service = new localhost.UserManagement(); 
service.CookieContainer = new CookieContainer(); 
if (service.AuthenticateUser("[email protected]", "test")) 
{ 
    var collection = service.CookieContainer.GetCookies(new Uri("http://localhost")); 
    foreach (Cookie item in collection) 
    { 
     HttpContext.Current.Response.Cookies.Add(CookieConverter(item)); 
    } 
    HttpContext.Current.Response.Flush(); 
    return true; 
} 

return false; 

注:CookieConverter(项目)用于转换Cookie对象我接收到的HttpCookie

感谢


private HttpCookie CookieConverter(Cookie cookie) 
     { 
      var result = new HttpCookie(cookie.Name); 

      result.Value = cookie.Value; 
      result.Domain = cookie.Domain; 
      result.Expires = cookie.Expires; 
      result.Path = cookie.Path; 
      result.Secure = cookie.Secure; 
      result.HttpOnly = cookie.HttpOnly; 

      return result; 
     } 
+0

FYI, “ASP.NET” 就是一个字 - 没有空格 – 2011-06-02 11:12:11

+0

你可以把代码放在那个方法中吗? – vtortola 2011-06-02 11:13:53

+0

var result = new HttpCookie(cookie.Name); result.Value = cookie.Value; result.Domain = cookie.Domain; result.Expires = cookie.Expires; result.Path = cookie.Path; result.Secure = cookie.Secure; result.HttpOnly = cookie.HttpOnly; 返回结果; – 2011-06-02 11:15:39

回答

0

你应该检查:

  • 集合是否为空?你能设置braeakpoint并检查收集?
  • 此代码位于何处? (?.aspx页面中,Web服务,HTTP处理程序)
  • 尝试创建简约 “曲奇二传手”,只是以任何方式添加简单的cookie
+0

代码工作正常,在调试过程中每一步都运行并且所有的cookie都被正确接收,转换并添加到响应中。 代码位于一个单独的类库中,它处理我需要使用的所有Web服务。它被称为从asp控制一个按钮点击(并不那么简单,但基本上这是发生了什么(主要应用程序是一个Sitefinity应用程序,因此它的一个小部件,使这种行为) 将尝试创建一个简约的二传手,给我5分钟会告诉你怎么去了 – 2011-06-02 11:18:35

+0

ok,简约的“cookie setter”工作,我可以提供测试cookie,那么可能会导致其他cookie不能发送? – 2011-06-02 11:28:52

+0

如果简约设置器工作,你应该尝试一步一步地改变它到你的代码,你可以找出哪些变化是关键 – pil0t 2011-06-02 11:33:16