0

我正在为一个 Web 应用程序编写一些 e2e 测试,其中有很多我需要与之交互的代码超出了我的控制范围。为了在每个测试或测试组开始时设置我的应用程序,我打算使用 sql 脚本将数据库播种到已知状态,然后强制 Web 应用程序重新启动,以便我无法控制的所有内部缓存都被重置.

考虑到这一点,有谁知道哪种方法可以让我以最快的速度重新启动 Web 应用程序?

我有的选择是:

  1. 触摸 web.config
  2. 在根目录中创建然后删除 app_offline.htm 文件
  3. 创建一些可以调用 HttpRuntime.UnloadAppDomain 的 API

这些方法中的任何一种都比其他方法更快吗?它们实际上都一样吗?

4

3 回答 3

0

我建议,公开一个将清除/刷新缓存的端点。可以从您的 e/e 测试中获得该端点吗?

于 2020-08-23T17:48:50.257 回答
0

使用选项#3:

System.Web.HttpRuntime.UnloadAppDomain();

此方法终止当前应用程序。应用程序在下次收到请求时重新启动。

请参阅:https ://docs.microsoft.com/en-us/dotnet/api/system.web.httpruntime.unloadappdomain?view=netframework-4.8

于 2020-08-23T17:46:27.753 回答
0

根据您建议的方法:

  1. 触摸 web.config
  2. 在根目录中创建然后删除 app_offline.htm 文件
  3. 创建一些可以调用 HttpRuntime.UnloadAppDomain 的 API

12看起来都有些笨拙,需要编写一个单独的 API 才能以编程方式完成。3 看起来不那么笨重,但肯定需要编写 API。

根据我的评论,我不确定是否有必要重新启动应用程序或将完成您需要的操作,因为重新播种的数据不会缓存在GAC. 如果数据来自 aWeb API那么您可能会考虑重新启动该 API。最好的方法是通过[![IIS AppPool advanced settings][1]][1]

您要确保设置如下: 启动模式:按需 *空闲超时(分钟):0 空闲超时操作:终止

除超时分钟(默认为 20 分钟)外,所有这些设置都是默认设置。通过在您的应用程序或第三方 AP 上将其设置为 0,应用程序将终止(从 GAC 转储)并在新的 Web 请求时重新启动。

在此处输入图像描述

于 2020-08-23T23:25:30.203 回答