Asp.net Azure emulator或云中未调用应用程序_End

Asp.net Azure emulator或云中未调用应用程序_End,asp.net,azure,azure-web-roles,Asp.net,Azure,Azure Web Roles,删除部署或重新启动实际生产Web角色时,不会调用ASP.NET Web应用程序的Application_End方法 卸载应用程序时,我需要执行清理操作(如删除动态服务总线订阅) 有什么想法吗?我不知道为什么在您的Web角色上没有调用(或者看起来没有调用)Application\u End,但您“应该使用Application\u End来清理您的实例”。这可能意味着您的代码会多次运行(例如每次循环),而这并不是必需的 清理操作应该放在OnStop方法的WebRole.cs中。但是请记住,你只有一

删除部署或重新启动实际生产Web角色时,不会调用ASP.NET Web应用程序的Application_End方法

卸载应用程序时,我需要执行清理操作(如删除动态服务总线订阅)


有什么想法吗?

我不知道为什么在您的Web角色上没有调用(或者看起来没有调用)Application\u End,但您“应该使用Application\u End来清理您的实例”。这可能意味着您的代码会多次运行(例如每次循环),而这并不是必需的


清理操作应该放在OnStop方法的WebRole.cs中。但是请记住,你只有一个问题。

我也遇到了同样的问题,我在他的启发下建立了一个不太理想的解决方案

在WebRole OnStop处理程序中,调用此函数以回收角色VM上的所有应用程序池:

var p = Process.Start("cmd.exe", Environment.ExpandEnvironmentVariables(@"/C %windir%\system32\inetsrv\appcmd list apppool /xml | %windir%\system32\inetsrv\appcmd.exe recycle apppool /in"));
p.WaitForExit();
(您需要通过直接将
添加到WebRole节点下的csdef文件中,确保您的web角色以提升的权限运行)


注意:请确保使用角色重新启动和缩放操作测试关闭代码

但我的Web应用程序中有服务总线订阅组件,我必须调用该组件。“WebRole”对象在另一个进程中运行,因此无法在该进程上清理。而且它肯定不会被调用,因为日志显示它不是。