Fazer chamada a Api em C#

fabiopires1011

Power Member
Boas , estou a desenvolver um jogo com a framework Monogame. Neste momento, estou a tentar chamar o método de Login que tenho na minha Api porém recebo sempre uma exceção.

Através de prints na consola consegui chegar à conclusão que o try é interrompido nesta linha response = await client.GetStringAsync(builder.Uri.AbsoluteUri);

O que estou a fazer mal?

Em baixo deixo a minha chamada à Api

Código:
public static async Task<User> Login(string username, string password)
         {
             string response;
             User user = null;

             try
             {
                 var builder = new UriBuilder(Uri + "User/Login")
                 {
                     Port = Port
                 };
                 builder.Query = $"Username={username}&Password={password}";
                Debug.WriteLine("REACHED AFTER BUILDER.QUERY");

                 response = await client.GetStringAsync(builder.Uri.AbsoluteUri);
                Debug.WriteLine("REACHED AFTER RESPONSE=");

                if (response == "Ok")
                 {

                     user = JsonConvert.DeserializeObject<User>(response);

                 }
             }
             catch (Exception ex)
             {
                 Debug.WriteLine("\tERROR {0}", ex.Message);

             }

             return user;
         }

e o meu endopoint de Login na Api

Código:
 [HttpPost("Login")]
        public IActionResult Authenticate([FromBody]AuthenticateModel userModel)
        {
           
            var user = _userService.Authenticate(userModel.Username, userModel.Password);

            if(user == null)
            {
                return BadRequest(new { message = "Username or Password invalid" });
            }

            var tokenHandler = new JwtSecurityTokenHandler();
           
            var key = Encoding.ASCII.GetBytes(_appSettings.Secret);

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Name, user.Id.ToString())
                }),
                Expires = DateTime.UtcNow.AddDays(7),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };

            var token = tokenHandler.CreateToken(tokenDescriptor);

            var tokenString = tokenHandler.WriteToken(token);

            return Ok(new
            {
                Id = user.Id,
                UserName = user.Username,
                Token = tokenString
            }) ;
        }
 
Back
Topo