Asp.net mvc 识别AWS负载平衡器TCP运行状况检查请求

Asp.net mvc 识别AWS负载平衡器TCP运行状况检查请求,asp.net-mvc,amazon-web-services,tcp,load-balancing,Asp.net Mvc,Amazon Web Services,Tcp,Load Balancing,我们管理一个托管在两台AWS机器上的.NETMVC应用程序。AWS负载平衡器管理到每台机器的流量。负载平衡器配置为每30秒对每台机器执行一次健康检查。它通过对端口80的TCP请求来实现这一点 应用程序希望每个请求背后都有一个人,因此运行状况检查会产生副作用,例如对数据库进行不必要的写入和膨胀的日志文件。健康检查请求的信号是HttpContext.Request.ServerVariables属性:“Host:mysite.com”中只有一个键值对 应用程序应该如何最好地识别此健康检查请求,以便能

我们管理一个托管在两台AWS机器上的.NETMVC应用程序。AWS负载平衡器管理到每台机器的流量。负载平衡器配置为每30秒对每台机器执行一次健康检查。它通过对端口80的TCP请求来实现这一点

应用程序希望每个请求背后都有一个人,因此运行状况检查会产生副作用,例如对数据库进行不必要的写入和膨胀的日志文件。健康检查请求的信号是
HttpContext.Request.ServerVariables
属性:“Host:mysite.com”中只有一个键值对


应用程序应该如何最好地识别此健康检查请求,以便能够以不会产生副作用的方式响应?我在想
ActionFilter
,但是除了检查是否缺少服务器变量之外,还有没有更准确的方法来隔离请求?

在我的应用程序中,我只是切换到AWS http检查,并设置一个带有索引操作的“心跳”控制器;没有逻辑,但当AWS点击/心跳时返回200。默认情况下,IIS日志将捕获此请求;您的问题中没有概述您的应用程序基础架构,但在我的案例中,操作中缺乏任何逻辑就足够了


但是,在这里实现自己的IHttpModule是另一种选择。在这里,您处于原始HttpApplication级别,因此此时不需要进入MVC管道。我使用它(除其他外)通过查找“X-Forwarded-Proto”标题在我的AWS托管应用程序中强制https重定向。

如果有人在2018年查找此标题(就像我刚才一样),AWS ELB健康检查请求现在有一个标题“User Agent=ELB HealthChecker/2.0”

不想更改运行状况检查配置,因此选择了HttpModule选项。谢谢