如何访问Global.asax静态成员?

时间:2010-12-30 18:26:37

标签: asp.net static global-asax

如果我们在static中声明了Global.asax变量,那么如何在ASP.NET页面中对其进行访问?

<script runat=server">

   public static object myObject = new MyClass();

   // Application_Start() and other stuff goes here.

</script>

而且,这是一个存储全局对象(所有请求都是相同的实例)的好主意吗?

4 个答案:

答案 0 :(得分:4)

myObject应该可以使用

在global.asax和ASP.NET页面内的所有方法中使用
Global.myObject

答案 1 :(得分:0)

就个人而言,我强烈反对在ASP.NET中使用全局变量。几年前我的经历比较糟糕。

您应该同步对全局MyClass实例成员的访问,以确保它在多线程方案中正常工作(如果有多个请求进入,则可能/必须这样做。)

您还可以使用ApplicationState according to Microsoft, you shouldn't

答案 2 :(得分:0)

最好将对象创建为单例,而不是将其作为“全局”对象。在应用程序启动时实例化它,并在应用程序端销毁它。只要您不需要它跨越Web场,您就会非常安全。

请参阅此帖及其评论。

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

答案 3 :(得分:0)

全球未定义 这对我有用:

ASP.global_asax 示例

ASP.global_asax.DefaultModel.GetTable( “标签”);