Мой сайт .NET MVC3 загружается через iframe на родительский сайт. Они получают действие контроллера на моем сайте с определенными параметрами в строке запроса. Мое действие проверяет эти параметры, сохраняет их в сеансе и выполняет RedirectToAction () для действия другого контроллера. Во втором действии первая строка кода получает эти параметры из сеанса. У нас не было проблем в DEV, более того, у нас не было проблем в QA.
В Production, после перенаправления, переменная сеанса очищается. Это происходит только в IE 8 и 7. Рабочий сервер имеет балансировщик нагрузки, но в данный момент второй сервер выключен, и проблема все еще существует. Вот код, я удалил проверку и некоторые другие вещи.
//Here is where they come in
[HttpGet]
public ActionResult Index(string locationGUID, string OtherParam)
{
//?locationGUID=ABCDEFGHIJKLMNOP,XXXXXXXXX&ContractInstance=2111,#####
//some validation here
var passedData = new PassedData
{
Guids = locationGUID.Split(',').ToList(),
OtherParam = OtherParam
};
PassedData = passedData;
//more validation and init DB logging here
return RedirectToAction("Index", "OtherController");
}
//PassedData is a property of Base Controller, from which all other controllers inherit
public PassedData PassedData
{
get { return (PassedData)Session["PassedData"]; }
set { Session["PassedData"] = value; }
}
//Here is Index of "OtherController", when we get here in Prod in IE, first line throws null reference exception, because PassedData is now NULL....
[HttpGet]
public ActionResult Index()
{
ViewBag.CustInfoList = PassedData.Guids.Select(guid => GetCustomerInfo(guid).Data).ToList();
//the rest of the code is not relevant to this question, since PassedData is already NULL :(
}
Большое спасибо заранее!
ОБНОВЛЕНИЕ: Я реализовал режим состояния сеанса "StateServer". Ничего не изменилось.
ОБНОВЛЕНИЕ: Я смотрю на Фиддлера. IE: родительский сайт устанавливает сессионный cookie. Мой сайт не FF: на обоих сайтах установлен cookie сессии.