2011-06-13 4 views
0

C'est la première fois que je crée un service web. Je ne suis pas sûr si ma mise en œuvre est incorrecte, mais j'essaie d'utiliser beaucoup comme une classe. Le problème est que lorsque j'essaie de consommer, je suis confus et ne pas être en mesure de définir les valeurs des propriétés.Comment consommer ce service Web?

Voici le service Web.

public class Service1 : System.Web.Services.WebService 
{ 
    private bool _isUserActive { get; set; } 
    private bool _isCredentialValid { get; set; } 
    public string email { get; set; } 
    public string pass { get; set; } 
    public int customerID { get; set; } 

    [WebMethod] 
    public bool VerifyUserCredential() 
    { 
     bool result = false; 

     PURLDataContext purl = new PURLDataContext(); 
     try 
     { 

      var res = purl.Sel_User(email.ToLower(), pass); 

      if (res != null) 
       result = true; 
      _isUserActive = true; 
      _isCredentialValid = true; 
     } 
     catch (Exception ex) 
     { 
      if (ex.Message == "Account is inactive, please contact your administrator!") 
      { 
       _isUserActive = false; 
       _isCredentialValid = false; 
      } 
      else 
       _isCredentialValid = false; 
      //Invalid credentials. 
     } 

     return result; 
    } 

    [WebMethod] 
    public ArrayList retrieveCustomerInfo() 
    { 
     ArrayList customerInfo = new ArrayList(); 
     string validate = "Please Validate"; 


     if (_isCredentialValid) 
     { 
      PURLDataContext purl = new PURLDataContext(); 
      var customer = purl.Sel_Recipient(customerID); 

      foreach (var c in customer) 
      { 
       customerInfo.Add(c); 
      } 

     } 
     else 
      customerInfo.Add(validate); 

     return customerInfo; 

    } 
} 

Voici ce que j'essaie de faire pour consommer.

 PURLServices.Service1SoapClient webserv = new Service1SoapClient(); 

     bool result; 
     ArrayOfAnyType array = new ArrayOfAnyType(); 

     webserv.email = "[email protected]"; 
     webserv.pass = "pass"; 
     webserv.customerID = 12345; 

     result = webserv.VerifyUserCredential(); 
     array = webserv.retrieveCustomerInfo(); 

Merci pour toute aide/

+0

Vous ne devez pas créer de services Web ASMX. Microsoft les considère comme une "technologie héritée". Tout nouveau développement devrait utiliser WCF. –

+0

Wow. Vous ne devriez pas non plus utiliser 'ArrayList' (obsolète depuis .NET 2.0, utilisez' List 'à la place), et vous ne devriez jamais vous comparer à la propriété' Message' d'un objet d'exception). –

+0

@JohnSaunders, thnx pour votre suggestion. WCF était beaucoup plus rapide et plus facile à mettre en œuvre. –

Répondre

0

Vous ne voulez pas essayer d'utiliser les propriétés comme celui-ci. Votre méthode devrait ressembler à ceci:

public bool VerifyUserCredential(string userName, string password) 
{ 
// method body here 

} 

Probablement vous voulez retourner un jeton d'accès de quelque sorte que le serveur cache. Cela peut ensuite être passé dans d'autres méthodes pour montrer que l'utilisateur est valide.

Questions connexes