asp.Net   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了asp.net – 如何知道为什么IIS应用程序池被回收大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
背景:

我已经部署了一个ASP.NET MVC 3应用程序,在我的机器上工作到一个shared hosting provider并发现一些似乎与应用程序池被回收有关的问题。主机在以下情况下已将垃圾回收设置发生:

>内存使用量超过200MB
CPU使用率超过75%(大概是持续的时间)
> 20分钟的空闲时间

我的开发机器的限制更为轻松,所以在开发过程中没有看到这样的回收。我没有管理员访问共享托管框(可以理解),所以我无法读取事件日志,以了解为什么这种回收正在发生。

题:

有没有办法我可以找出为什么我的应用程序被回收(例如Application_End),以便我可以记录它来帮助我的调试?

解决方法

无需访问事件日志(因为您处于共享托管环境中),您将要获得的最多信息来自Application_End事件,并通过向httpRuntime(通过反射)询问一个或两个私有成员的值很遗憾不会公开露面

为此,将以下代码添加到Application_End事件中:

BindingFlags staticFlags = 
    BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.GetField;
BindingFlags instanceFlags = 
    BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField;

httpRuntime runtime = (httpRuntimE)typeof(System.Web.httpRuntimE)
                        .InvokeMember("_theRuntime",staticFlags,null,null);
if(runtime != null) 
{
    String shutDownmessage = (String)runtime.GetType()
         .InvokeMember("_shutDownmessage",instanceFlags,runtime,null);

    String shutDownStack = (String)runtime.GetType()
         .InvokeMember("_shutDownStack",null);

    // Log shutDownmessage & shutDownStack somewhere
}

如果我关闭或回收我的应用程序的应用程序池,我看到以下内容:

HosTingEnvironment initiated shutdown
HosTingEnvironment caused shutdown -    
   at System.Environment.GetStackTrace(Exception e,@R_607_8487@an needFileInfo)
   at System.Environment.get_StackTrace()
   at System.Web.HosTing.HosTingEnvironment.InitiateShutdownInternal()
   at System.Web.HosTing.HosTingEnvironment.InitiateShutdownWithoutDemand()
   at System.Web.HosTing.PipelineRuntime.StopProcessing()

这可能与获得的一样好。

更新:

我不记得我在哪里找到这个代码,但是Drew有帮助地提醒我,这是从Scott Guthrie博客文章。

还有一些其他的私人会员可能是有用的,如:

private ApplicationShutdownReason _shutdownReason;

您可以检查.NET Reflector中的这些字段(如果您仍然有一个不是时间轰炸的副本)或其他选项(Open Source Alternatives to Reflector?)。

大佬总结

以上是大佬教程为你收集整理的asp.net – 如何知道为什么IIS应用程序池被回收全部内容,希望文章能够帮你解决asp.net – 如何知道为什么IIS应用程序池被回收所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。