2017-10-01 2 views
1

Ich verwende den Dienst wcf in Angular JS-Anwendung. aber ich erhalte das erwartete Ergebnis. Ich habe Zweifel, dass bei Linq Query oder Angular Js Application etwas falsch ist. Hier Was ich versuche zu erreichen, wenn Benutzername und Passwort falsch sind, sollte die Methode false zurückgeben und den Zählversuch starten. Wenn der Benutzer viermal einen falschen Benutzernamen oder ein falsches Passwort eingibt, ist das Konto gesperrt. Sonst, wenn benutze den richtigen Benutzernamen oder das Passwort mit 4 mal eingeben, dann sollte die Methode true zurückgeben und versuchen, die Anzahl auf Null zu setzen.Linq-Abfrage kann erwartetes Ergebnis nicht zurückgeben

Hier ist meine Schnittstelle.

[OperationContract] 
    [WebInvoke(Method = "POST", 
    RequestFormat = WebMessageFormat.Json, 
    ResponseFormat = WebMessageFormat.Json, 
    //BodyStyle = WebMessageBodyStyle.WrappedRequest, 
    UriTemplate = "/AuthenticateUser")] 
    bool AuthenticateUser(UserLogin userLogin); 

Hier ist die Implementierung der Methode ..

public bool AuthenticateUser(UserLogin userLogin) 
    { 
     using (HalifaxDatabaseEntities db = new HalifaxDatabaseEntities()) 
     { 
     var attamp = from X in db.tblUsers 
         where X.Username==userLogin.Username&& X.Password== userLogin.Password 

         select X.RetryAttempts!=4; 

      if (attamp!=null) 
      { 
       return true; 

      } 

      else 
      { 

       return false; 
      } 
     } 
    } 

Antwort

0

Eine Linq-Abfrage, die eine Auflistung zurückgibt (wie Select oder Where) wird nie null zurück. Nur Abfragen, die ein einzelnes Ergebnis zurückgeben (wie First oder Single) können.

Obwohl es nicht klar, wie genau RetryAttempts geändert wird, könnte eine bessere Methode sein, so etwas wie:

// this will return a collection will only one result - true or false 
var attamp = from X in db.tblUsers 
      where X.Username==userLogin.Username&& X.Password== userLogin.Password 
      select X.RetryAttempts!=4; 
//.Single() will give you the value of the one and only result - either true or false 
return attamp.Single(); 
+0

Ich meine, wenn der Benutzer falsch Benutzername oder Passwort eingeben 4-mal, dann sollte und beginnen Zahl von 1 gesperrt Konto bis 4 .. andernfalls, wenn Sie einen falschen Benutzernamen oder ein falsches Passwort eingegeben haben, aber das zweite Mal, dass Benutzername und Passwort korrekt waren, dann sollte der Versuch von Null aus gezählt werden, und die Methode gibt true zurück –

Verwandte Themen