Хорошо, я в тупике. Вот сценарий:
У меня есть приложение .net 4.0 mvc3 (бритва), встроенное в iframe на удаленном сайте. У меня есть стандартный поставщик членства для безопасности, и все работает нормально, если я использую Chrome или Firefox. Однако, когда я использую ie9 (как в режиме совместимости, так и вне его) и safari (только пробовал 5.1.4), я получаю исключение System.NullReferenceException при попытке доступа к Membership.GetUser () в другом контроллере после входа в систему.
Итак, я успешно вошел в свой 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 напрямую, он запускается во всех браузерах (которые я пробовал).
Есть идеи?
Заранее спасибо.