我在aspnix http://www.aspnix.com的共享主机平台上托管了一个非常简单的mvc 2应用程序。
有些时候,用户在网站导航期间丢失了身份验证(我使用标准会员提供商),并被重定向到登录页面。 经过一些研究后,我开始怀疑会话因应用程序重启而丢失,因此我决定安装并配置运行状况监视服务,以便跟踪应用程序关闭和重启。
在对应用程序发出一些请求后,我开始在运行状况监视日志中看到以下条目:
Event code: 1002 Event message: Application is shutting down. Reason: Hosting environment is shutting down. Event time: 12/8/2010 8:16:33 AM Event time (UTC): 12/8/2010 3:16:33 PM Event ID: d92fbba0487b4bab97bd7eff4b0083bb Event sequence: 38 Event occurrence: 1 Event detail code: 50002 Application information: Application domain: /REMOVED FOR PRIVACY! Trust level: Full Application Virtual Path: / Application Path: C:\REMOVED FOR PRIVACY! Machine name: REMOVED FOR PRIVACY! Process information: Process ID: 12516 Process name: w3wp.exe Account name: REMOVED FOR PRIVACY!
然后重新启动应用程序。
然后我联系了aspnix支持,它说服务器没问题,其他一些大型站点在同一台服务器上运行没有问题,这可能是我的应用程序的问题。
所以我开始在我的应用程序中进行调查,但我找不到任何问题。
我也意识到当我请求静态资源时也会出现关机,例如png图像!
经过一番研究后,我在Scott Gu博客上发现了这篇有趣的帖子: http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx
所以我像Scott一样拦截global.asax中的Application_End事件,然后每当我的应用程序关闭时发送邮件......并且内容每次都是相同的:
_shutDownMessage=HostingEnvironment initiated shutdown
HostingEnvironment caused shutdown
_shutDownStack= at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
at System.Environment.get_StackTrace()
at System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()
at System.Web.Hosting.HostingEnvironment.InitiateShutdownWithoutDemand()
at System.Web.Hosting.PipelineRuntime.StopProcessing()
我知道重启的原因可能是web.config的更改,bin或aspx文件的更改,内存的过度使用等... 但在这种情况下,应用程序关闭也会出现静态资源的请求,并且应用程序的其他部分也非常简单,只使用标准成员资格提供程序和一些linq to sql查询......
我还订阅了所有未处理的异常的Application_Error事件,没有结果。
有什么想法吗?
答案 0 :(得分:0)
aspnix很可能就是问题所在。从他们切换到Amazon EC2后,我的服务更加可靠和快捷。