c# – 嵌入iframe时,ie9中的.NET Membership.GetUser()null和ifr
发布时间:2020-12-15 17:24:57 所属栏目:百科 来源:网络整理
导读:好吧,我很难过.这是场景: 我在远程站点的iframe中嵌入了一个.net 4.0 mvc3应用程序(razor).我有一个安全的标准会员提供商,只要我使用Chrome或Firefox,一切正常.但是,当我使用ie9(兼容模式内外)和safari(仅尝试过5.1.4)时,我在登录后尝试访问另一个控制器中
好吧,我很难过.这是场景:
我在远程站点的iframe中嵌入了一个.net 4.0 mvc3应用程序(razor).我有一个安全的标准会员提供商,只要我使用Chrome或Firefox,一切正常.但是,当我使用ie9(兼容模式内外)和safari(仅尝试过5.1.4)时,我在登录后尝试访问另一个控制器中的Membership.GetUser()时会收到System.NullReferenceException. 所以我在我的AccountController中成功登录并重定向到我的TravelController: public ActionResult LogOn(LogOnModel model,string returnUrl) { try { if (ModelState.IsValid) { if (MembershipService.ValidateUser(model.UserName,model.Password)) { FormsService.SignIn(model.UserName,model.RememberMe); log.Debug("User: " + model.UserName + " logged in."); return RedirectToAction("Travel","Travel"); } } } catch(.... 现在应用程序重定向到TravelController,它执行以下操作: public ActionResult Travel() { try { string userName = Membership.GetUser().UserName; ... code ... } catch(Exception ex) { throw; } } 所以这一切在Chrome和Firefox中运行良好,但是当我尝试使用ie或safari运行相同的代码时,Membership对象为null. 我有一种感觉它与iframe有某种关系,但我现在第二次猜测一切.如果我在iframe之外运行它;意思是我直接调用url它在所有浏览器中运行(我已经尝试过). 有任何想法吗? 解决方法
身份验证基于Cookie.如果iframe不提供机器可读的隐私政策,则Internet Explorer不允许iframe中的第三方网站使用Cookie.有关详细信息,请参见
http://www.softwareprojects.com/resources/programming/t-how-to-get-internet-explorer-to-use-cookies-inside-1612.html和
http://en.wikipedia.org/wiki/P3P.
所以你应该在网站上添加一个合适的标题,它应该可以正常工作. 希望有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |