Silverlight: Netzwerkproblem
-
Ähem .. das habe ich nicht gemeint, einen Webservice habe ich schon programmiert. Ich meinte fehlende Funktionalität bauen denn die Methode Dns.GetHostAddresses steht mir im Webservice ebenfalls nicht zur Verfügung.
Ich habe auch schon Request.ServerVariables(“REMOTE_HOST”) per asp.net versucht. Leider ebenfalls ohne Erfolg.
-
Hier: http://forums.silverlight.net/t/34744.aspx findes Du einiges zum Thema: Getting the IP ADDRESS of the visitor from SilverLight
mfg
-
Funktioniert leider nicht. Andere Vorschläge?
-
Orchy schrieb:
Ähem .. das habe ich nicht gemeint, einen Webservice habe ich schon programmiert. Ich meinte fehlende Funktionalität bauen denn die Methode Dns.GetHostAddresses steht mir im Webservice ebenfalls nicht zur Verfügung.
mit Silverlight kenne ich mich nicht aus, bei normalen asp.net webservices geht das auf jedenfall.
-
Orchy schrieb:
Ich will mit der .NET Framework 4-Methode Dns.GetHostAddresses die IP-Adresse für den angegebenen Host holen. Kann es sein daß es diese Methode für Silverlight nicht gibt? Gibt es für dieses Problem eine andere Lösung?
Füg' deinem Projekt im Web-Part mal den Verweis auf System.Net hinzu ... dann klappt's auch mit Dns.GetHostAddresses.
-
System.Net habe ich dazugefügt. Klappt aber immer noch nicht.
-
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 !!!!!!!!!!