Silverlight: Netzwerkproblem
-
Silverlight bietet meines Wissens nach diese Funktionalität nicht an. (Prinzipiell auch sinnvoll, da eine IP-Adresse hinter einem Proxy reichlich wertlos ist)
Du wirst nicht auf den Webservice verzichten können.
-
Ich verwende einen Webservice. Den Verweis auf System.Net habe ich auch hinzugefügt. Aber die IP bekomme ich nicht zurück.
-
Was bekommst du stattdessen zurück? Wie sieht dein Webservice aktuell aus?
-
Mein Webservice sieht aktuell so aus:
using System.Net;
using System.ServiceModel;
using System.ServiceModel.Activation;namespace GetIP.Web
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service
{
[OperationContract]
public string GetIPAddress()
{
return Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString();
}
}
}
-
Lass mich raten: Dein (spartanischer) Webservice liefert etwas in der Art fe80::980e:ab9d:2e1d:e9a9%10 ...
-
Dns.GetHostName() macht keinen Sinn. Du willst doch die IP-Adresse des Clients haben und nicht die des asp.net-Servers?
Ich hab hier bei mir sowas stehen:string remote_ip = this.Context.Request.UserHostAddress;
-
Habe ich mal probiert. Jetzt wird als IP ::1 ausgegeben. Noch ein Vorschlag?
-
Sofern deine Silverlight-App auf derselben Kiste läuft wie der webservice wäre das richtig.
::1 (ipv6) ist quasi das gleiche wie 127.0.0.1 (ipv4)
Sinnvolle IPs wirst du natürlich nur bekommen wenn der Silverlight-Kram auf einer Remote-Kiste läuft
-
Nein, die App läuft im Netzwerk auf einem lokalen IIS. Aus dem Internet aufgerufen kommt ein ähnlicher Wert wie von schmidt-webdesign.net beschreiben. Was ist ipv6 und liegt vll. da der Bug?
-
Orchy schrieb:
Was ist ipv6 und liegt vll. da der Bug?
Internet Protocol Version 6 (IPv6)
Nein, der Bug ist zweibeinig und sitzt vor deinem Monitor
Versuch dies, das sollte funktionieren:
// Funktioniert dieser Code, hat ihn Dirk Schmidt (http://schmidt-webdesign.net) geschrieben. // Funktioniert er nicht, ist der Autor unbekannt. [OperationContract] public string GetIP4Address() { foreach (IPAddress ipa in Dns.GetHostAddresses(HttpContext.Current.Request.UserHostAddress)) if (ipa.AddressFamily == AddressFamily.InterNetwork) return ipa.ToString(); foreach (IPAddress ipa in Dns.GetHostAddresses(Dns.GetHostName())) if (ipa.AddressFamily == AddressFamily.InterNetwork) return ipa.ToString(); return String.Empty; }
-
das funktioniert! D A N K E !!!!!!!!!!