Adresse IP du Client dans ASP.NET (.asmx) webservices
Je suis en utilisant ASP.NET (.asmx) de services web avec Silverlight. Depuis il n'y a pas moyen de trouver l'adresse IP du client dans Silverlight, j'ai eu de vous connecter sur le service à la fin.
Voici quelques méthodes que j'ai essayé:
Request.ServerVariables("REMOTE_HOST")
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
Request.UserHostAddress()
Request.UserHostName()
string strHostName = Dns.GetHostName();
string clientIPAddress = Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
Toutes les méthodes ci-dessus fonctionne bien sur mon système local, mais lorsque je publie mon service sur un serveur de production, il commence à donner des erreurs,
Erreur: Objet de référence non définie à une instance d'un objet. StackTrace:
au Système.Web.De l'hébergement.ISAPIWorkerRequestInProc.GetAdditionalServerVar(Int32 index)
au Système.Web.De l'hébergement.ISAPIWorkerRequestInProc.GetServerVariable(String nom)
au Système.Web.De l'hébergement.ISAPIWorkerRequest.GetRemoteAddress()
au Système.Web.HttpRequest.get_UserHostAddress()
OriginalL'auteur Zain Shaikh | 2010-03-28
Vous devez vous connecter pour publier un commentaire.
Si vous jetez un oeil à l'aide de Réflecteurs au Système.Web.De l'hébergement.ISAPIWorkerRequestInProc.GetAdditionalServerVar code, c'est ce que nous voyons:
Je vois deux raisons pour lesquelles cela pourrait soulever une exception NullReferenceException:
1) il y a un multithreading question sur le _additionalServerVars membre. Je ne pense pas que cela pourrait se produire parce que A) je ne vois pas pourquoi il y aurait de grosse charge sur votre serveur lors de l'essai, et B) la ISAPIWorkerRequestInProc exemple est probablement attaché à un fil.
2) votre serveur n'est pas à jour et le code de la production n'est pas le même que celui que je vois sur ma machine.
Donc ce que je voudrais faire est de vérifier que le serveur s'assurant qu'il est à jour avec les .NET Framework dll.
OriginalL'auteur Simon Mourier
Vous devriez essayer de savoir exactement où le
NullReferenceException
. Modifiez votre code pour comprendre que certaines choses peuvent retourner la valeur null. Par exemple, dansHttpContext.Current
pourrait retrun null, ou.Request
peut retourner null, ou.ServerVariables["REMOTE_ADDR"]
peut retourner null. Aussi, dansla
GetHostAddresses(strHostName)
peut retourner null, ou le.GetValue(0)
peut retourner null.Si une méthode ou une propriété peut retourner null, alors vous devriez vérifier la valeur null avant d'être déréférencé. Par exemple,
P. S. je ne sais pas pourquoi vous devriez utiliser
GetValue(0)
. UtilisationhostAddresses[0]
à la place.Comme je l'ai dit, vérifier la valeur null avant d'utiliser l'une de ces valeurs. En fait, assurez-vous de tester
HttpContext.Current
pour voir si c'est null, avant de vous essayerHttpContext.Current.Request
.OriginalL'auteur John Saunders