2013-10-09 33 views
1

在我在Windows Azure中托管的ASP.NET MVC3应用程序中,我想知道应用程序重新启动了多少次(以便我知道启动顺序是正确的)。所以我需要某种“变量”,我可以从Application_Start()中“增量”,但它应该以某种持久的方式存储,否则它将无法在应用程序重新启动后继续存在。存储需要是每个应用程序的实例。每个ASP.NET应用程序实例是否都有一个持久存储?

当然,我可以使用系统注册表或一些临时文件,但我想应该有更好的东西。

有没有什么可以用于我的场景的ASP.NET基础结构?

+0

如果您可以访问到文件系统,你可以在文本或XML文件中的AppData目录存储。如果您有权访问SQL Server,则还可以将其存储在那里。这看起来很简单,或者我错过了什么? –

+0

@ErikPhilips:Yeap,这很简单,但代码非常多。我希望有一些像会话变量一样简单的东西。 – sharptooth

+0

@ErikPhilips - 如果这是在云服务中运行的Web角色,本地存储是不够的,因为没有保证存储将继续存在。另外:即使您在每个实例上存储了*,您也只能通过连接到每个实例来收集这些数据。一旦你将*缩小到更少的实例,你就会失去宝贵的数据。请参阅Gaurav的回答,了解一个外部化,持久的存储解决方案。 –

回答

2

你可以使用Windows Azure Table Storage。大声想一想,你可以有一个名为ApplicationRestarts的表,每次应用程序启动时,都可以将一个实体放入该表中。该实体可以具有以下属性:

  • PartitionKey:可能是日期/时间重新启动应用程序时。或者它可能是角色实例名称。
  • RowKey:同上。如果选择日期/时间作为PartitionKey,则角色实例名称可以是RowKey,反之亦然。
  • 角色名称:该角色的名称(以防万一您有意收集)。
  • RoleInstanceName:角色实例的名称。
  • RestartTimestamp:日期/时间角色实例已重新启动。
  • 元数据:您可能需要捕获的其他一些信息。
0

如果您使用的是Windows Azure虚拟机,则可以创建在回收池事件后触发的PowerShell脚本。

http://blogs.technet.com/b/wincat/archive/2011/08/25/trigger-a-powershell-script-from-a-windows-event.aspx

更多有用的链接:

https://webmasters.stackexchange.com/a/17633

https://stackoverflow.com/a/13623638/1384539

+0

好吧,它火了,然后我做什么? – sharptooth

+0

既然你可以捕捉事件,你可以做任何你想做的事情。一世。e发送电子邮件,创建一个仪表板, –

+0

当然,但是这些对于以编程方式查找应用程序重新启动*的次数来说并不是很有用,它们会吗? – sharptooth

相关问题