每次打开网站时都会进行MVC初始化

时间:2014-04-15 13:00:53

标签: c# asp.net-mvc static initialization startup

我已经尝试了静态C#构造函数(对于MVC控制器)和Global.asax.cs但不幸的是应用程序似乎仍然存在,所以当一个用户退出,而另一个用户打开MVC应用程序时,静态变量初始化不会(总是) 发生。显然,这些静态变量" live"超出应用程序实例(即应用程序在网站上打开和关闭时)。

有没有人知道在MVC网站(即主索引页面)的开放和/或关闭时始终有效的方法?我需要在此时重新初始化我的静态C#控制器成员....

提前致谢。

2 个答案:

答案 0 :(得分:1)

网站的生命周期与个人用户关系不大。实际上,在IIS的最新版本中,它甚至不需要启动应用程序的传入请求 - 它可以选择在任何流量之前先发制人。同样,用户之间不会重做任何事情。由于http流量基本上是断开连接的,因此无法确定用户何时离开。 Web服务器通常具有循环/关闭标准,但这在很大程度上与用户无关。

Web应用程序的生命周期:

  • 在某些时候它可能是自发的,可能是由于传入的请求,也许是应用程序池循环的一部分
  • 它为来自许多不同用户的大量http请求提供服务;经常同时,经常交错
  • 在某个时刻,它关闭了;也许是由于不活动,可能是由于应用程序池循环,可能是由于服务器关闭

这里没有与用户相关的特殊生命周期。从Web服务器的角度来看,您所看到的只是个别请求,并且只有在您响应它们时才会持续。你不知道他们何时关闭浏览器,你也不知道他们已经在浏览器上打开了标签并且去度假了一个星期。

如果它影响控制器状态:你做错了。

答案 1 :(得分:0)

可以在控制器index()方法中为应用程序的“主页”页面执行以下操作(当新用户进入应用程序时始终访问该页面):

我们的应用程序跟踪登录的用户,因此可以使用静态变量跟踪旧用户,当此更改时,对其他静态变量运行“初始化”,最后将跟踪用户设置为新用户。这适用于我想要完成的任务。

注意:我们没有高度交易系统,只有少数用户,不应该同时出现多个用户。如果有,这可能会变得一团糟!