当我第二次运行该应用程序时,我遇到了一个致命的 asp.net 应用程序。重新构建后第一次运行成功,但第二次运行(没有新的重新构建)失败。重新构建后,应用程序再次运行,但没有重新构建的第二次运行失败等。所以我每次都必须重新构建应用程序运行才能成功。
错误:无法解析文件 [C:...\bin\BiFiContext.xml] 第 8 行中定义的名称为“BiFiModelSweden”的对象的类型 [BiFiModelSweden.BiFiModelSwedenClass]
这发生在下面的最后一个命令中,同时创建为空的 IApplicationContext:
String cx1 = ConfigurationManager.AppSettings["cx1"];
String cx2 = ConfigurationManager.AppSettings["cx2"];
IApplicationContext cxt = new XmlApplicationContext(HttpContext.Current.Request. MapPath(cx1), HttpContext.Current.Request.MapPath(cx2));
在分析运行应用程序的开发网络服务器后,使用 ANTS 内存分析器,我们得到一个输出:
并非所有对象都已从上下文注册表中删除。您是否忘记使用 base.Dispose()?
然后,我们尽我们所能通过各种方式使用 dispose 方法。我们无法克服这个致命的应用程序崩溃!
额外观察:即使应用程序在中途停止,log4net 也会继续记录。这是否象征着僵尸会议?这可能是问题吗,当我们开始一个新的应用程序运行/会话时,我们永远不会完全终止一个会话?导致致命异常?上一个会话被挂起并持有(锁定)资源?
如果是这种情况,我们已经尝试了所有终止会话的方法: * session.Abandon() * gc.finalize() * 等等
没有任何效果。唯一的解决方法是手动删除缓存......这是不切实际的。我们如何解决这个问题!!