Вы можете получить доступ к текущему Session
через HttpContext.Current
- свойство static , с помощью которого вы можете получить экземпляр HttpContext
, который применяется к текущему веб-запросу. Это общий шаблон в статическом коде приложения и статических методах страницы.
string s = (string)HttpContext.Current.Session["UserName"];
Тот же метод используется для доступа к Session
из веб-методов ASMX, украшенных [WebMethod(EnableSession = true)]
, поскольку, хотя такие методы не являются статичными, они не наследуются от Page
и, следовательно, не имеют прямого доступа к Session
собственность.
Статический код может обращаться к кэшу приложений таким же образом:
string var1 = (string)HttpContext.Current.Cache["Var1"];
Если статический код находится внутри другого проекта, нам нужно сослаться на System.Web.dll
. Однако в этом случае обычно лучше избегать такой зависимости, потому что если код вызывается извне контекста ASP.NET, HttpContext.Current
будет null
по очевидным причинам. Вместо этого мы можем потребовать HttpSessionState
в качестве аргумента (нам все равно понадобится ссылка на System.Web
, конечно):
public static class SomeLibraryClass
{
public static string SomeLibraryFunction(HttpSessionState session)
{
...
}
}
Звоните:
[WebMethod]
public static string GetName()
{
return SomeLibraryClass.SomeLibraryFunction(HttpContext.Current.Session);
}