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

Windows Communication Foundation .NET Discussion :

Accéder à mon service par l'URL


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut Accéder à mon service par l'URL
    Bonjour à tous,
    Je cherche à pouvoir tester mon service WCF via l'url dans mon navigateur.

    Voici mon code :
    • Mon inteface
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      [OperationContract]
              [WebInvoke(Method = "POST", UriTemplate = "Connection", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
              UserDataContract ConnectToCrimovies(string pseudo, string password);
    • L'implémentation
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      public UserDataContract ConnectToCrimovies(string pseudo, string password)
              {
                  return UserDataContract.Connexion(pseudo, password);
              }
    • Le dataContract
      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
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      [DataMember(Order = 1)]
              public int Id { get; set; }
       
              [DataMember(Order = 2)]
              public string Pseudo { get; set; }
       
              [DataMember(Order = 3)]
              public string Email { get; set; }
       
              [DataMember(Order = 4)]
              public bool IsErrorConnection { get; set; }
       
              [DataMember(Order = 5)]
              public string ErrorMessage { get; set; }
       
      #region Constructor
       
              public UserDataContract(int id, string email, string pseudo, bool isErrorConnection)
              {
                  Id = id;
                  Email = email;
                  Pseudo = pseudo;
                  IsErrorConnection = isErrorConnection;
              }
       
              #endregion
       
      public static UserDataContract Connexion(string pseudo, string password)
              {
                  var user = (from u in Model.Utilisateurs
                              where u.Pseudo.Equals(pseudo)
                              select u).FirstOrDefault();
       
                  var passwordHash = EncryptSha1(password, Encoding.UTF8);
       
                  if (user != null && passwordHash.Equals(user.PasswordEncrypt))
                  {
                      if (user.IsActive != false)
                      {
                          if (WebOperationContext.Current != null)
                              WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.OK;
                          return new UserDataContract(user.IdUtilisateur, user.Email, user.Pseudo, false);
                      }
                      return new UserDataContract(user.IdUtilisateur, user.Email, user.Pseudo, true, "Votre compte a été désactivé.");
                  }
                  if (WebOperationContext.Current != null)
                      WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotFound;
                  return new UserDataContract(true, "Mauvaise combinaison Login / Mot de passe.");
              }



    Si je teste mon service avec le WCF Test Client, que j'inscris mon pseudo avec mon mot de passe, j'ai un résultat qui correspond (mon id, mon email...).

    Mais si je tente d'accéder via le navigateur à ma méthode, j'ai une page blanche qui est affichée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:3097/CrimoviesService.svc/Connection/monPseudo/MonMotDePasse
    Cette page blanche s'affiche aussi lorsque je change le type de retour en XML à l aplace de JSON.

    Auriez-vous un conseil ?

    Merci d'avance pour votre aide !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je pense que l'url pour accéder à la méthode de ton service serait plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:3097/CrimoviesService.svc/Connection?pseudo=monPseudo&password=MonMotDePasse
    et en UriTemplate mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UriTemplate = "Connection?pseudo={pseudo}&password={password}"

  3. #3
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Merci pour cette réponse.

    J'ai appliqué les modifications, mais cela ne fonctionne toujours pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [OperationContract]
            [WebInvoke(Method = "POST", UriTemplate = "Connection?pseudo={pseudo}&password={password}", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
            UserDataContract ConnectToCrimovies(string pseudo, string password);
    URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:3097/CrimoviesService.svc/Connection?pseudo=monpseudo&password=monpassword
    J'ai aussi testé cette URI template, mais sans résultat...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Connection/{pseudo}/{password}
    Que puis-je faire d'autre ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Installes Fiddler et regardes ce qui se passe réellement.

    Et essaies de communiquer directement avec ton service en utilisant toujours Fiddler.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Une autre question.

    Peut-on voir la configuration de ton service dans le fichier de confugation? Juste la section <system.serviceModel>.

  6. #6
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Alors Fiddler est installé. Voici le résultat lorsque je tente d'accéder à l'url suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GET /CrimoviesService.svc/Connection?pseudo=crimovies&password=bresWEM3 HTTP/1.1
    J'ai le code HTTP 400.
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Onglet Statistics : 
    Request Count:   1
    Bytes Sent:      460		(headers:460; body:0)
    Bytes Received:  201		(headers:201; body:0)
     
    ACTUAL PERFORMANCE
    --------------
    ClientConnected:	17:45:42.238
    ClientBeginRequest:	17:45:42.242
    GotRequestHeaders:	17:45:42.242
    ClientDoneRequest:	17:45:42.242
    Determine Gateway:	0ms
    DNS Lookup: 		0ms
    TCP/IP Connect:	0ms
    HTTPS Handshake:	0ms
    ServerConnected:	17:45:42.243
    FiddlerBeginRequest:	17:45:42.243
    ServerGotRequest:	17:45:42.243
    ServerBeginResponse:	17:45:42.285
    GotResponseHeaders:	17:45:42.286
    ServerDoneResponse:	17:45:42.286
    ClientBeginResponse:	17:45:42.286
    ClientDoneResponse:	17:45:42.286
     
    	Overall Elapsed:	00:00:00.0440025
     
    RESPONSE BYTES (by Content-Type)
    --------------
    ~headers~:	201
     
     
    ESTIMATED WORLDWIDE PERFORMANCE
    --------------
    The following are VERY rough estimates of download times when hitting servers based in WA, USA.
     
    US West Coast (Modem - 6KB/sec)
    	RTT:		0,10s
    	Elapsed:	0,10s
     
    Japan / Northern Europe (Modem)
    	RTT:		0,15s
    	Elapsed:	0,15s
     
    China (Modem)
    	RTT:		0,45s
    	Elapsed:	0,45s
     
    US West Coast (DSL - 30KB/sec)
    	RTT:		0,10s
    	Elapsed:	0,10s
     
    Japan / Northern Europe (DSL)
    	RTT:		0,15s
    	Elapsed:	0,15s
     
    China (DSL)
    	RTT:		0,45s
    	Elapsed:	0,45s
     
     
    ================
    Learn more about HTTP performance at http://fiddler2.com/r/?HTTPPERF
    Voici le contenu de mon web.config :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
              <serviceMetadata httpGetEnabled="true" />
              <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
              <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
      </system.serviceModel>

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

Discussions similaires

  1. accéder à mon ordinateur par ftp
    Par cijez dans le forum Windows 7
    Réponses: 3
    Dernier message: 30/10/2011, 17h00
  2. Réponses: 9
    Dernier message: 12/01/2011, 18h38
  3. Méthode toString d'une classe exposée par mon service WCF
    Par duvelmoi9 dans le forum Windows Communication Foundation
    Réponses: 5
    Dernier message: 24/12/2010, 00h16
  4. Réponses: 18
    Dernier message: 10/05/2010, 23h05
  5. [Continuum] accéder au pom dans cvs par une url
    Par izyl_ dans le forum Intégration Continue
    Réponses: 9
    Dernier message: 04/05/2009, 11h40

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