Имея опечатку ,
вместо :
, вы используете сокращенные имена свойств .
Итак, ваш литерал объекта эквивалентен:
{
posts: postReducers,
stationsReducer: stationsReducer,
trackCircuitReducer: trackCircuitReducer,
trackCircuitReducer: trackCircuitReducer,
}
Из MDN :
Строгий режим до Gecko 34 требует, чтобы все свойства с именем в буквальном объекте быть уникальным. Обычный код может дублировать имена свойств, причем последний определяет значение свойства. Но поскольку только последний ничего не делает, дублирование - это просто вектор ошибок, если код изменяется для изменения значения свойства, отличного от изменения последнего экземпляра. Двойные имена свойств являются синтаксической ошибкой в строгом режиме.
blockquote>(Примечание: это больше не относится к ECMAScript 2015 )
Вы можете упростить свой литерал до:
export const rootReducer = combineReducers({ posts: postReducers, stationsReducer, trackCircuitReducer })
Я бы использовал внедрение зависимостей и передавал экземпляр HttpContext (или просто сеанс) классу, который нуждается доступ к сессии. Другой альтернативой является ссылка на HttpContext.Current, но это усложнит тестирование, поскольку это статический объект.
public ActionResult MyAction()
{
var foo = new Foo( this.HttpContext );
...
}
public class Foo
{
private HttpContextBase Context { get; set; }
public Foo( HttpContextBase context )
{
this.Context = context;
}
public void Bar()
{
var value = this.Context.Session["barKey"];
...
}
}
You just need to call it through the HttpContext
like so:
HttpContext.Current.Session["MyValue"] = "Something";
Haven't done it myself, but this sample from Chad Meyer's blog might help (from this post: http://www.chadmyers.com/Blog/archive/2007/11/30/asp.net-webforms-and-mvc-in-the-same-project.aspx)
[ControllerAction]
public void Edit(int id)
{
IHttpSessionState session = HttpContext.Session;
if (session["LoggedIn"] == null || ((bool)session["LoggedIn"] != true))
RenderView("NotLoggedIn");
Product p = SomeFancyDataAccess.GetProductByID(id);
RenderView("Edit", p);
}
I would also wrap all session variables into a single class file. That way you can use intelliSense to select them. This cuts down on the number of paces in code where you need to specify the "strings" for the session.