2017-03-22 3 views
0

In einem Dienst Ich habe eine einfache Funktion schreibt Mieter-ID von bestimmten Benutzern"Der aktuelle Benutzer hat sich nicht bei der Anwendung angemeldet!" Fehler beim Funktionsaufruf aus dem Dienst

[AbpAuthorize] 
    public int? FindTenancyNameByUserNameOrEmail(string userNameOrEmail) 
    { 
     var qry = (from p in _memberRepository.GetAll() 
        where p.UserName == userNameOrEmail || p.EmailAddress == userNameOrEmail 
        select p).FirstOrDefault(); 
     if (qry != null) 
     { 
      return qry.TenantId; 
     } 
     else 
     { 
      throw new Exception("User not found"); 
     } 
    } 

Ich rufe diese Funktion von Login-Funktion von Konto-Controller zu erhalten.

public async Task<JsonResult> Login(LoginViewModel loginModel, string returnUrl = "", string returnUrlHash = "") 
    { 
     var tenancyid = _memberAppService.FindTenancyNameByUserNameOrEmail(loginModel.UsernameOrEmailAddress.Trim()); 
     //bla bla code 
    } 

ich folgende Fehlermeldung erhalten:

Exception thrown: 'Abp.Authorization.AbpAuthorizationException' in Abp.dll

Additional information: Current user did not login to the application!

Antwort

0

Das Problem der Benutzer nicht an den Mieter wurde gehört.

Die folgende Zeile wurde verwendet, um die Mandanten-ID und den Code festzulegen.

CurrentUnitOfWork.SetFilterParameter(AbpDataFilters.MayHaveTenant, AbpDataFilters.Parameters.TenantId, intTenancyId); 

hinzugefügt, um das [AbpAllowAnonymous] Attribut auf die Service-Methode

1

Das Problem ist in erster Linie

var qry = (from p in _memberRepository.GetAll() 

.GetAll() Funktion diesen Fehler erstellen, wie Sie nicht Builtin-Funktion in Linq-Abfrage verwenden können. Statt

verwenden

var Myvariable = _memberRepository.GetAll().ToList(); 
var qry = (from p in Myvariable where p.UserName == userNameOrEmail || p.EmailAddress == userNameOrEmail select p).FirstOrDefault(); 
1

Das Problem AbpAuthorize Attribut ist [AbpAuthorize] entfernen.

Verwandte Themen