System.NullReferenceException podczas sprawdzania warunku

System.NullReferenceException podczas sprawdzania warunku
E2
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 6 lat
  • Postów:16
0

Witam chciałbym sprawdzić czy istnieje już taki username podany przez użytkownika, jeśli istnieje ma zwrócić true jeśli nie false.

Kopiuj
        [HttpGet]
        [AllowAnonymous]
        [Route("api/TakeUserName/{username}")]
        public IHttpActionResult TakeUserName(string username) 
        {
            var userStore = new UserStore<ApplicationUser>(new ApplicationDbContext());
            var manager = new UserManager<ApplicationUser>(userStore);

            var result = userStore.FindByNameAsync(username);

           return (result == null )  ? Ok(false) : Ok( !string.IsNullOrEmpty(result.Result.UserName));

        }

Dla istniejącej wartości username zwraca true tak jak powinno być, ale dla nie istniejącej wartości wyrzuca System.NullReferenceException a powinno zwrócić false.

Progress
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:220
1

Poczytaj o debuggowaniu kodu, pozwala rozwiązac takie problemy w kilka sekund.

W warunku powinieneś sprawdzać czy result.Result jest nullem, bo to tam jest przechowywany potencjalny użytkownik.

Kopiuj
return (result.Result == null )  ? Ok(false) : Ok( !string.IsNullOrEmpty(result.Result.UserName));

edytowany 2x, ostatnio: Progress
E2
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 6 lat
  • Postów:16
0

Dodanie async i await także rozwiązało problem

Kopiuj
       [HttpGet]
        [AllowAnonymous]
        [Route("api/TakeUserName/{username}")]
        public async Task<IHttpActionResult> TakeUserName(string username) 
        {
            var userStore = new UserStore<ApplicationUser>(new ApplicationDbContext());
            var manager = new UserManager<ApplicationUser>(userStore);

            var result = await  userStore.FindByNameAsync(username);


            //return (result.Result == null) ? Ok(false) : Ok(!string.IsNullOrEmpty(result.Result.UserName));
          return (result == null )  ? Ok(false) : Ok( !string.IsNullOrEmpty(result.UserName));

        }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.