Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每次打开网站时MVC初始化_C#_Asp.net Mvc_Static_Initialization_Startup - Fatal编程技术网

C# 每次打开网站时MVC初始化

C# 每次打开网站时MVC初始化,c#,asp.net-mvc,static,initialization,startup,C#,Asp.net Mvc,Static,Initialization,Startup,我已经尝试过静态C#构造函数(用于MVC控制器)和Global.asax.cs,但不幸的是,应用程序似乎会延迟,因此当一个用户退出,另一个用户打开MVC应用程序时,静态变量初始化不会(总是)发生。显然,这些静态变量“存在”于应用程序实例之外(即,当应用程序在网站上打开和关闭时) 是否有人知道在打开和/或关闭MVC网站(即主索引页)时始终有效的方法?此时我需要重新初始化静态C#控制器成员 提前感谢。网站的生命周期与个人用户关系不大。事实上,在最新版本的IIS中,启动应用程序甚至不需要传入请求——它

我已经尝试过静态C#构造函数(用于MVC控制器)和Global.asax.cs,但不幸的是,应用程序似乎会延迟,因此当一个用户退出,另一个用户打开MVC应用程序时,静态变量初始化不会(总是)发生。显然,这些静态变量“存在”于应用程序实例之外(即,当应用程序在网站上打开和关闭时)

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


提前感谢。

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

web应用程序的生命周期:

  • 在某个时候,它开始了,可能是自发的,可能是由于传入的请求,可能是作为应用程序池循环的一部分
  • 它为来自不同用户的大量http请求提供服务;经常是同时的,经常是交错的
  • 在某个时刻,它会关闭;可能是由于不活动,可能是由于应用程序池循环,可能是由于服务器关闭
这里没有与用户相关的特殊生命周期。从web服务器的角度看,您所能看到的只是单个请求,它们只能持续到您响应它们所需的时间。你不知道他们什么时候关闭浏览器,你也不知道他们把浏览器上的标签打开,去度假一周了


有很多方法可以了解更多这方面的信息,但它们不是直接涉及web服务器的问题,它们当然不应该与任何控制器成员国联系在一起。如果它影响控制器状态:您做错了。

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

我们的应用程序跟踪登录用户,因此可以使用静态变量跟踪旧用户,当此变量发生变化时,对其他静态变量运行“初始化”,最后将跟踪用户的变量设置为新用户。这正是我想要实现的目标


注意:我们没有一个高度事务性的系统,只有几个用户,不应该同时有多个用户。如果有,这可能会变得一团糟

“因此,当一个用户退出,另一个用户打开MVC应用程序”/(即当应用程序在网站上打开和关闭时)“呃。。。我不确定你是否完全清楚网络应用程序的工作原理我认为你把win forms应用程序和网络应用程序混淆了。。。web应用程序域将一直存在,直到它因空闲而死亡。@tmckown回收/关闭标准可能会有所不同;闲置不一定会导致应用程序关闭应用程序回收和闲置在我的书中是一样的。我的观点是,应用程序不会在单页生命周期结束时死亡。对使用静态变量的替代方案进行了很好的讨论。根据您的情况,这些备选方案中的一些可能效果更好。我在MVC(asp.net)中了解到,静态变量是非常全局的,所以正如其他海报所提醒的那样,请谨慎使用。