Web API 2验证控制器是否在生产环境中运行

本文关键字:生产环境 运行 是否 控制器 API 验证 Web | 更新日期: 2023-09-27 18:16:41

我对C#web api 2相当陌生,并为一些内部使用创建web服务。我在我的CI管道中为我们的开发和测试环境设置了冒烟和验收测试,这些测试在我们的db中插入虚假数据,并验证各种输出、错误消息等等。

问题来了;当我们部署了一个新版本后,在生产环境中进行验收/配置测试。

理想情况下,我想要一个简单的配置测试/报告,告诉我controllers已被正确实例化,并在正确的路由上。

是否有一种方法在web api 2原生实现这一点?如果没有,您建议如何在生产环境中测试controllers的可用性,而不污染数据库(对于POST request),并且有已知的数据进行测试。

Web API 2验证控制器是否在生产环境中运行

我可能会创建一个带有GET的/test端点,它返回应用程序的状态,无论您需要什么。例如,它是否可以执行sql(即使没有数据),它可以使用UrlHelper生成到所有已知端点的链接(您可能必须使用反射或自定义属性或仅提供控制器/操作列表来验证)并显示它们。

你可以创建一个自定义过滤器属性来验证请求中是否提供了特定的数据(如自定义报头),而不是实际运行操作(通过设置响应),而是返回将执行的操作的信息(使用像controllerContext, actionContext之类的东西)。然后,您可以手动或使用一些自动化(甚至从/test端点内)使用该标头进行调用,并检查url是否对应于正确的操作。

我不知道有什么方法可以检查在生产中运行的控制器,除了做HTTP请求。

如果是我,我会有一些方法来识别请求为"仅测试",(可能是一个自定义的HTTP请求头,或者在输入中寻找一个特殊的值)。作为这些请求的一部分写入数据库的任何数据都将被标记为"仅测试",以使其与"实际"生产数据区分开来。

或者,如果您主要关注的只是控制器,并且您没有足够的信心在测试环境中调用它们,那么可能为每个控制器添加诊断路由并调用它。如。"controller1/test"返回200/OK,表示已配置controller1。