我们在Azure上托管了一个MVC ASP.NET Web应用程序作为应用程序服务。
每天3到4次,我可以看到它重新启动了。我在global.asax的System.Web.HostingEnvrionment.ShutdownReason
中登录了Application_End()
,原因返回为“配置更改”,根据文档,这意味着应用程序配置已更改。
我已经问过我们的小型团队,没有人手动更改配置。弄清代码后,我看不到我们以编程方式对其进行更改的任何地方。天蓝色站点配置为始终打开。内存使用在发生时并没有达到极限,尽管它似乎在较高的通信时间内更频繁地发生。
是否有办法获取更改的特定文件,以便我可以将其记录在Application_End()
中?还是任何其他方式来获取更多细节?
最佳答案
斯科特·古思里(Scott Guthrie)的博客文章介绍了如何通过反射获得更多的information out of the Application Shut Down events。我将详细阅读他的文章,以查找有关问题的更多信息。
下面是斯科特页面上用于提取更多信息的代码段。然后,您可以使用所使用的任何工具对其进行记录。
HttpRuntime runtime = (HttpRuntime)typeof(System.Web.HttpRuntime)
.InvokeMember("_theRuntime",
BindingFlags.NonPublic
| BindingFlags.Static
| BindingFlags.GetField,
null,
null,
null);
if (runtime == null)
return;
string shutDownMessage = (string)runtime.GetType().InvokeMember("_shutDownMessage",
BindingFlags.NonPublic
|BindingFlags.Instance
|BindingFlags.GetField,
null,
runtime,
null);
string shutDownStack = (string)runtime.GetType().InvokeMember("_shutDownStack",
BindingFlags.NonPublic
| BindingFlags.Instance
| BindingFlags.GetField,
null,
runtime,
null);
注释中提到您可能需要对代码具有某些权限才能执行私有反射。
祝您好运,我希望这可以帮助您更进一步解决问题。
关于c# - 如何找出为什么Application_End在Azure App Service上触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35304556/