问题描述
我正在为Web应用程序编写一些e2e测试,在该应用程序中,我需要与之交互的大量代码不在我的控制范围内。为了在每个测试或一组测试的开始时设置应用程序,我打算使用sql脚本将数据库设置为已知状态,然后强制Web应用程序重新启动,以便将控件外部的所有内部缓存全部重置
牢记这一点,是否有人知道哪种方法可以使我重新启动Web应用程序最快?
我拥有的选项是:
解决方法
使用选项3:
System.Web.HttpRuntime.UnloadAppDomain();
此方法终止当前应用程序。下次收到请求时,应用程序将重新启动。
,我建议公开一个端点,该端点将清除/刷新缓存。可以从您的电子测试中获取该端点吗?
,根据您建议的方法:
- 触摸web.config
- 创建然后在根目录中删除一个app_offline.htm文件
- 创建一些可以调用HttpRuntime.UnloadAppDomain的API
1 和 2 似乎有些笨拙,需要编码一个单独的API才能以编程方式进行。 3似乎不那么笨拙,但绝对需要编写API。
根据我的评论,我不确定重启应用程序是否必要或将完成您需要的操作,因为重新播种的数据不会缓存在GAC
中。如果数据来自Web API
,则可以考虑重新启动该API。最好的方法是通过[![IIS AppPool advanced settings][1]][1]
:
您要确保设置如下: 启动模式:按需 *空闲超时(分钟):0 空闲超时操作:终止
所有这些设置都是默认设置,但超时分钟除外,默认情况下为20。通过在您的应用程序或第三方AP上将其设置为0,该应用程序将终止(从GAC中转储)并在收到新的Web请求时重新启动。