2013-12-11 30 views
1

这是一个通用的问题。尽管如此,它仍然是一个谜,需要解释...IISReset背后的奥秘

最近我们的应用程序被部署在生产与最新的代码。这是一个ASP.NET MVC 3应用程序,使用WCF作为服务,SQL Server用于数据库。部署是自动化过程,从DIT,SIT,Stage到Prod的升级也是自动化的。

部署之后,在测试过程中,我们发现生产中的应用程序的行为与其他环境中的行为不一样。功能不匹配。 DIT,SIT和Stage正在按预期工作,但Prod不会。我们在所有prod服务器中检查了它们是最新设置的Dll。我在DEV中调试,发现它按预期工作。

无法找到解释,我们做了所有督促服务器IISRESET你猜怎么着!..它开始作为预期工作,没有任何问题,到现在... :)

  1. 是否有一个很好的解释,为什么IISRESET解决了这个问题?
  2. 部署后IISRESET是强制性的吗?我的理解是甚至 配置/ dll更改将强制应用程序回收和最新的dll 将被挑选..
  3. 是否有任何其他步骤,我们可以采取?时间是一个制约因素,我们需要尽快获得prod盒子。
+0

也许这[帖子](http://stackoverflow.com/questions/23566/what-does-an-iisreset-do)可以摆脱一些光。 – scheien

+0

如何回收应用程序池?它是否必须是完整的iisreset? –

+0

@DaveMarkle我们认为AppPool会在我们部署时自动回收,所以我们去了iisreset – SridharVenkat

回答

1

一个广泛的问题,但想到的是,缓存将受到iisreset的影响。静态字段/类的值也会受到影响。

添加到@Will院长的答案。在部署期间,您是否正在应对app_offline.htm文件并在之后将其删除?

+0

缓存也不会被应用池回收消除吗? – scheien

+0

@scheien - 即使重新启动应用程序域,部署也不一定会重新启动池.exe进程。 –

+0

@WillDean好吧,很高兴知道:-) – scheien

2

您不说自动部署是如何完成的,但根据文件复制的顺序,回收可能会很早发生(例如,因为web.config已被覆盖),而还有其他文件被复制。然后你最终得到一个旧的,部分新的应用程序运行。

+0

这是一个很好的观点,文件如何被复制...... – SridharVenkat