Доступ к переменным HttpApplication.Application из класса - PullRequest
8 голосов
/ 10 июня 2010

Я установил различные глобальные параметры в Global.asax, например:

Application["PagePolicies"] = "~/Lab/Policies.aspx";
Application["PageShare"] = "/Share.aspx";
Application["FileSearchQueries"] = Server.MapPath("~/Resources/SearchQueries.xml");
...

У меня нет проблем с доступом к этим переменным из файла .ascx.cs или .aspx.cs - т.е.файлы, которые являются частью веб-контента.Тем не менее, я не могу получить доступ к «Приложению» из базовых объектов класса (т. Е. Автономные файлы .cs).Я где-то читал, чтобы использовать небольшие вариации в файлах .cs, как показано ниже, но это всегда вызывает исключение при использовании:

String file = (String)System.Web.HttpContext.Current.Application["FileSearchQueries"];

Ответы [ 2 ]

7 голосов
/ 10 июня 2010

Хотя это правда, что вы можете использовать HttpContext.Current из любого класса, вы все равно должны обрабатывать HTTP-запрос при его вызове - иначе нет текущего контекста.Я предполагаю, что именно по этой причине вы получаете исключение, но публикация фактического исключения поможет прояснить ситуацию.

3 голосов
/ 16 января 2013

, чтобы поделиться своей переменной в приложении и получить доступ к ней из автономного класса, вместо статической переменной HttpApplication можно использовать статическую переменную класса.

public MyClass{
 public static int sharedVar;
}

//and than you can write somwhere in app:
MyClass.sharedVar= 1;

//and in another location:
int localVar = MyClass.sharedVar;
...