Как получить доступ к статическим членам Global.asax? - PullRequest
5 голосов
/ 30 декабря 2010

Если мы объявим переменную static в Global.asax, то как получить к ней доступ на странице ASP.NET?

<script runat=server">

   public static object myObject = new MyClass();

   // Application_Start() and other stuff goes here.

</script>

И это хорошая идея для хранения глобального объекта (такой жеэкземпляр для всех запросов)?

Ответы [ 4 ]

4 голосов
/ 30 декабря 2010

myObject должен быть доступен для всех методов в global.asax и внутри ваших страниц ASP.NET, используя

Global.myObject
0 голосов
/ 13 октября 2012

Глобальный не определен это работает для меня:

ASP.global_asax Пример

ASP.global_asax.DefaultModel.GetTable ( "Ключевые слова");

0 голосов
/ 31 декабря 2010

Может быть лучше создать ваш объект как одиночный объект, а не как "глобальный" объект. Создайте его в начале приложения и уничтожьте в конце приложения. Пока вы не нуждаетесь в этом на веб-фермах, вы в безопасности.

Смотрите этот пост и его комментарии.

http://weblogs.asp.net/jeff/archive/2007/09/21/how-do-you-get-a-true-singleton-in-an-asp-net-app.aspx

0 голосов
/ 30 декабря 2010

Лично я бы категорически против использования глобальных переменных в ASP.NET.Несколько лет назад у меня был довольно неудачный опыт.

Вы должны синхронизировать доступ к членам вашего глобального экземпляра MyClass, чтобы убедиться, что он работает правильно в многопоточном сценарии (что вероятно / обязательно, если приходит несколько запросов)в).

Существует также ApplicationState, который вы могли бы использовать, согласно Microsoft, вы не должны .

...