diff --git a/dotnet/src/dotnetcore/GxNetCoreStartup/Startup.cs b/dotnet/src/dotnetcore/GxNetCoreStartup/Startup.cs
index e86d3bf46..c6bcff2d0 100644
--- a/dotnet/src/dotnetcore/GxNetCoreStartup/Startup.cs
+++ b/dotnet/src/dotnetcore/GxNetCoreStartup/Startup.cs
@@ -18,6 +18,7 @@
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features;
+using Microsoft.AspNetCore.HttpOverrides;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Rewrite;
using Microsoft.AspNetCore.Routing;
diff --git a/dotnet/test/DotNetCoreWebUnitTest/DotNetCoreWebUnitTest.csproj b/dotnet/test/DotNetCoreWebUnitTest/DotNetCoreWebUnitTest.csproj
index 789e4b132..61a57b2f2 100644
--- a/dotnet/test/DotNetCoreWebUnitTest/DotNetCoreWebUnitTest.csproj
+++ b/dotnet/test/DotNetCoreWebUnitTest/DotNetCoreWebUnitTest.csproj
@@ -59,6 +59,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
diff --git a/dotnet/test/DotNetCoreWebUnitTest/Middleware/HeadersTest.cs b/dotnet/test/DotNetCoreWebUnitTest/Middleware/HeadersTest.cs
new file mode 100644
index 000000000..cc26e10e5
--- /dev/null
+++ b/dotnet/test/DotNetCoreWebUnitTest/Middleware/HeadersTest.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Net.Http;
+using System.Reflection;
+using System.Threading.Tasks;
+using GeneXus.Metadata;
+using Xunit;
+namespace xUnitTesting
+{
+ public class HeadersTest : MiddlewareTest
+ {
+ public HeadersTest() : base()
+ {
+ ClassLoader.FindType("apps.httpheaders", "GeneXus.Programs.apps", "httpheaders", Assembly.GetExecutingAssembly(), true);//Force loading assembly for append procedure
+ server.AllowSynchronousIO = true;
+
+ }
+ protected override void SetEnvironmentVars()
+ {
+ Environment.SetEnvironmentVariable("ASPNETCORE_FORWARDEDHEADERS_ENABLED", "true", EnvironmentVariableTarget.Process);
+
+ }
+ [Fact]
+ public async Task TestForwardedHeaders()
+ {
+ const string host = "192.168.1.100";
+ const string scheme = "https";
+ const string remoteUrl = $"{scheme}:\\/\\/{host}";
+ HttpClient client = server.CreateClient();
+ client.DefaultRequestHeaders.Add("X-Forwarded-For", host);
+ client.DefaultRequestHeaders.Add("X-Forwarded-Proto", scheme);
+
+ HttpResponseMessage response = await client.GetAsync("/rest/apps/httpheaders");
+ response.EnsureSuccessStatusCode();
+ string resp = await response.Content.ReadAsStringAsync();
+ Assert.Contains(remoteUrl, resp, System.StringComparison.OrdinalIgnoreCase);
+ Assert.Equal(System.Net.HttpStatusCode.OK, response.StatusCode);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/dotnet/test/DotNetCoreWebUnitTest/apps/httpheaders.cs b/dotnet/test/DotNetCoreWebUnitTest/apps/httpheaders.cs
new file mode 100644
index 000000000..5e8a8fef4
--- /dev/null
+++ b/dotnet/test/DotNetCoreWebUnitTest/apps/httpheaders.cs
@@ -0,0 +1,57 @@
+using GeneXus.Application;
+using GeneXus.Data.NTier;
+using GeneXus.Procedure;
+
+namespace GeneXus.Programs.apps
+{
+ public class httpheaders : GXWebProcedure
+ {
+
+ public httpheaders()
+ {
+ context = new GxContext();
+ DataStoreUtil.LoadDataStores(context);
+ IsMain = true;
+ context.SetDefaultTheme("Carmine");
+ }
+
+ public httpheaders(IGxContext context)
+ {
+ this.context = context;
+ IsMain = false;
+ }
+
+ public void execute(out string result)
+ {
+ initialize();
+ executePrivate(out result);
+ }
+
+ void executePrivate(out string result)
+ {
+ result = (context.GetHttpSecure() == 1 ? "https://" : "http://") + context.GetRemoteAddress();
+
+ cleanup();
+ }
+
+ public override void cleanup()
+ {
+ CloseOpenCursors();
+ base.cleanup();
+ if (IsMain)
+ {
+ context.CloseConnections();
+ }
+ ExitApp();
+ }
+
+ protected void CloseOpenCursors()
+ {
+ }
+
+ public override void initialize()
+ {
+ }
+ }
+
+}
diff --git a/dotnet/test/DotNetCoreWebUnitTest/apps/httpheaders.svc b/dotnet/test/DotNetCoreWebUnitTest/apps/httpheaders.svc
new file mode 100644
index 000000000..bbfa49ec1
--- /dev/null
+++ b/dotnet/test/DotNetCoreWebUnitTest/apps/httpheaders.svc
@@ -0,0 +1 @@
+<%@ServiceHost Service= "GeneXus.Programs.apps.httpheaders,apps.httpheaders" %>