【发布时间】:2012-03-28 21:43:38
【问题描述】:
好吧,我被难住了。这是场景: 我在远程站点的 iframe 中嵌入了一个 .net 4.0 mvc3 应用程序(剃须刀)。我有一个标准的会员资格提供商以确保安全,只要我使用 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 对象为空。
我感觉它与 iframe 有某种关系,但我现在正在猜测一切。如果我在 iframe 之外运行它;这意味着我直接调用它在所有浏览器中运行的 url(我已经尝试过)。
有什么想法吗? 提前致谢。
【问题讨论】:
-
你看过 p3p 标头吗?
标签: c# .net iframe membership