Ich weiß, dass dieser Beitrag ist alt, aber ich kam hier für die gleiche Frage suchen und finnaly tat ich dies:
Auf project.json hinzufügen Abhängigkeit:
"Microsoft.AspNetCore.HttpOverrides": "1.0.0"
auf Startup.cs im Configure-Methode hinzu:
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor |
ForwardedHeaders.XForwardedProto
});
Und natürlich:
using Microsoft.AspNetCore.HttpOverrides;
Dann bekam ich die ip wie folgt aus:
Request.HttpContext.Connection.RemoteIpAddress
In meinem Fall, wenn in VS Debuggen habe ich immer IpV6 localhost, aber wenn sie auf ein im Einsatz IIS Ich habe immer die Remote IP bekommen.
einige nützliche Links: How do I get client IP address in ASP.NET CORE? und RemoteIpAddress is always null
Das :: 1 kann da sein: bei IIS Abschluss
Verbindungen, die dann nach vorne zu Kestrel, der v.next Web-Server, so dass Verbindungen zum Webserver sind ja von localhost. (https://stackoverflow.com/a/35442401/5326387)
Es gibt mehrere Probleme mit ihm, soweit ich weiß, vor allem wenn man es hinter einem Loadbalancer und/oder iis hosten. Es gibt einen 'UseOverrideHeaders' oder so, aber wird in' rc2' in 'UseForwardedHeaders' umbenannt, siehe die Ankündigung https://github.com/aspnet/Announcements/issues/147. Aber soweit ich weiß, kann Ihnen das auch nicht weiterhelfen, denn es gibt das letzte X-Forwarded-For zurück, das in vielen Cloud-Bereitstellungen der Reverseproxy und nicht der ursprüngliche Benutzer wäre. – Tseng
Aber es gibt ein Feature in der Diskussion, soweit ich weiß, um zu bestimmen, von welchem Hop das X-Forwarded-For (dh 2 Hops zurück und nicht nur die letzte – Tseng
Ich denke, das ist eine gute Antwort http: // stackoverflow.com/a/36316189/625581 –