Problem Konvertieren von ipv6 in ipv4

8

Ich habe Code in einer asp.net-App, die die IP-Adresse des Client-Computers (die Benutzer sind alle in unserem eigenen Netzwerk) abrufen müssen. Vor kurzem haben wir den Server aktualisiert, auf dem die App auf Windows 2008 Server läuft. Jetzt gibt der Request.UserHostAddress-Code das ipv4 zurück, wenn sich der Client auf einem älteren Betriebssystem und ipv6 befindet, wenn sie sich auf einem neueren Betriebssystem (Vista und höher) befinden. Die Funktion, die sich darauf bezieht, funktioniert für einige Clients und nicht für andere.

Ich habe Code hinzugefügt, der ipv6 in ipv4 konvertieren soll, um dieses Problem zu beheben. Es ist von diesem Online-Tutorial: Ссылка . Ich benutze dsn.GetHostAddress und dann durch die zurückgegebenen IPs Suche nach einem, der "Internetwork" ist

%Vor%

Das Problem ist, dass dies nicht für mich funktioniert. Die Clients, die von ipv4 aus eine Verbindung herstellen, geben weiterhin die korrekte ipv4-IP des Clientcomputers zurück, aber die Clients, die von Vista und Windows 7 aus eine Verbindung herstellen, geben die ipv4-IP des SERVER -Machines zurück.

    
Eden 11.01.2010, 18:04
quelle

3 Antworten

7

Einfache Antwort: Deaktivieren Sie IPV6 auf dem Server, oder entfernen Sie die IPV6-Adresse des Servers aus dem DNS-Eintrag.

Es gibt keinen magischen IPV4 & lt; - & gt; IPV6 Konverter. Sie sind völlig unterschiedliche Protokolle, und Adressen in einem übersetzen nicht zum anderen. Wenn Sie die IPV4-Adresse des Clients zuverlässig abrufen möchten, müssen Sie sicherstellen, dass der Client eine Verbindung über IPV4 herstellt.

    
Jesse Weigert 17.02.2010, 03:36
quelle
6

Ich hatte auch den Beispielcode kopiert und ein Kollege wies darauf hin, dass es offensichtlich fehlerhaft war. Diese Zeile verwendet den Hostnamen des Servers, daher das falsche Ergebnis:

%Vor%

Ich habe den Code in meinem Projekt wie folgt korrigiert:

%Vor%

Der obige Code funktioniert in ASP.Net 2.0 unter Windows 7 / Server 2008. Hoffe, das hilft.

    
Berend Engelbrecht 29.08.2013 06:19
quelle
1

Wenn Sie .Net 4.5 Framework verwenden, dann gibt es eine Methode, IP6 in IP4 zu konvertieren

%Vor%

Sie finden die Details hier

    
Ravi Shankar 14.03.2013 07:39
quelle

Tags und Links