将客户端IP从ASP.NET Web API转发到Azure中托管的.NET Core API



我有一个Angular应用程序,它向.NET 4.6.2 Web MVC控制器发出请求,控制器内部的代码使用HttpClient向.NET Core 3.1 API发出请求。所有应用程序都托管在Azure中。

所以角度->NET 4.6.2->NET核心3.1 API。

我想在.NET Core应用程序中获取原始客户端IP。在Azure中添加环境变量ASPNETCORE_FORWARDEDHEADERS_ENABLED=true后,通过读取HttpContext.Connection.RemoteIpAddress,从客户端直接发送到.NET Core应用程序的请求运行良好。但在使用.NET 4.6.2应用程序时不是这样,在这种情况下,IP是Azure IP,而不是客户端IP。

将客户端ip信息从.NET 4.6.2应用程序转发到.NET Core 3.1应用程序的最佳方式是什么?

您可以在.NET 4.6.2应用程序中读取客户端的IP地址,并使用自定义HTTP标头(类似X-CLIENTIP(将其发送到.NET Core应用程序。在.NET Core应用程序上,首先尝试获取自定义标头。如果它不存在(这意味着调用直接来自客户端(,请从HttpContext.Connection.RemoteIpAddress 中读取

最新更新