IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

[WCF] Récupérer l'adresse IP de l'utilisateur d'un service


Sujet :

Services Web

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2010
    Messages : 36
    Par défaut [WCF] Récupérer l'adresse IP de l'utilisateur d'un service
    Bonjour,

    Je suis en train d'écrire un web-service dans lequel je récupère des infos sur un utilisateur (nom, prénom, adresse-ip, ...)

    J'aimerai récupérer l'adresse ip en analysant la requête HTTP, mais je n'y arrive pas.

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string clientAdresse = HttpContext.Current.Request.UserHostAddress;
    Mais cela ne marche pas car HttpContext.Current renvoie null

    Grosso modo voici à quoi ressemble le service
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    [ServiceContract]
    public class ServiceTest
    {
        [OperationContract]
        [WebGet(UriTemplate = "/aUser?nom={nom}&prenom={prenom}")]
        public void addUser(string nom, string prenom)
        {
            Utilisateur unUtilisateur = new Utilisateur
            {
                DateInscription = DateTime.Now,
                Nom = nom,
                Prenom = prenom,
                AdresseIp = HttpContext.Current.Request.UserHostAddress
            };
     
            dbManager = new dbManager(true);
     
            if(Utilisateur.Exist()) dbManager.Update(Utilisateur);
            else
            {
                dbManager.Add(Utilisateur);
            }
            dbManager.Close();
        }
    }
    Merci de votre aide

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    HttpContext.Current, c'est pour les services web ASP.NET, pas WCF

    Tu dois pouvoir récupérer l'adresse comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string remoteHost = OperationContext.Current.Channel.RemoteAddress.Uri.Host;
    (non testé)

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2010
    Messages : 36
    Par défaut
    Merci tomlev mais OperationContext.Current.Channel.RemoteAddress renvoie null.

    Par-contre en cherchant sur des forums anglophones, j'ai trouvé une solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.Text;
    using System.ServiceModel.Channels;
     
    namespace ClientInfoSample
    {
        public class MyService : IService
        {
            public string GetData(string value)
            {
                OperationContext context = OperationContext.Current;
                MessageProperties messageProperties = context.IncomingMessageProperties;
                RemoteEndpointMessageProperty endpointProperty = messageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
     
                return string.Format("Hello {0}! Your IP address is {1} and your port is {2}", value, endpointProperty.Address, endpointProperty.Port);
            }
        }
    }
    source : http://nayyeri.net/detect-client-ip-in-wcf-3-5

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par tomlev Voir le message
    HttpContext.Current, c'est pour les services web ASP.NET, pas WCF
    Pour être précis, on peut utiliser le HttpContext avec WCF si on a mis l'attribut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

    sur le contrat WCF.


  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    ah, bon à savoir

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2010
    Messages : 36
    Par défaut
    Merci Bluedeep,
    J'ai vu qu'il y a un article complet ici http://blogs.msdn.com/b/wenlong/arch...23/516041.aspx

    Je le lirai ce soir.

    Encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/07/2020, 21h11
  2. récupérer adresse IP de l'utilisateur
    Par BYALI dans le forum Langage
    Réponses: 10
    Dernier message: 11/09/2019, 13h00
  3. Réponses: 5
    Dernier message: 13/08/2010, 11h40
  4. Comment récupérer les adresses WWW dans Internet Explorer ?
    Par chaours dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/09/2003, 14h27
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo