API не отправляет данные при вызове из другого проекта и показывает ошибку HTTP 204 - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть метод в ASP. net API, который отправляет токен JWT при получении запроса с HTTP-методом Get. На Fiddler, когда я вызываю этот API, все работает нормально; но когда я вызываю тот же API с другим проектом (сделано в angular 8), я получаю HTTP 204 Error и никаких данных. В Angular Project я вызываю этот API на NgOnInit моего Компонента.

Вот код API

  [HttpGet("[action]")]
        public string GetToken()
        {
            try
            {
                string key = "FIPL@321456222222222222222222222222222222222222222222222222222222222222222222"; //Secret key which will be used later during validation    
                var issuer = "http://localhost:1424/";  //normally this will be your site URL    

                var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));
                var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);

                //Create a List of Claims, Keep claims name short    
                var permClaims = new List<Claim>();
                permClaims.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()));
                //permClaims.Add(new Claim("valid", "1"));
                //permClaims.Add(new Claim("userid", "1"));
                //permClaims.Add(new Claim("name", "bilal"));

                //Create Security Token object by giving required parameters    
                var token = new JwtSecurityToken(issuer, //Issure    
                                issuer,  //Audience    
                                         permClaims,
                                expires: DateTime.Now.AddDays(1),
                                signingCredentials: credentials);
                var jwt_token = new JwtSecurityTokenHandler().WriteToken(token);
                enter image description here
                return (String)jwt_token;
            }
            catch (Exception ex)
            {
                return (string)ex.Message ;
            }

        }

Вот код angular, где вызывается API.

ngOnInit() {
    let obj = JSON.parse(localStorage.getItem("Auth"));
    this.DepartmentModel._iBPNo = obj.BPNo;
    this.DepartmentModel._iLoginNo = obj.LoginNo;
    //Here I am Calling the API to get token
    this.httpServices.get("http://localhost:52484/api/Token/gettoken/", null, (data) => {
      alert(JSON.stringify(data));
      localStorage.setItem("Token", JSON.stringify(data));

         }, (error) => {
           console.log(error);
      });


    if (JSON.parse(sessionStorage.getItem("PDEP"))) {
      this.DeptNo = JSON.parse(sessionStorage.getItem("PDEP"));
      this.LoadData();
    }
  }

Вот ссылка на мой отклик страницы скрипача.

1 Ответ

0 голосов
/ 01 апреля 2020

Вы можете попробовать подписаться на HTTP-запрос напрямую:

this.httpServices.get("http://localhost:52484/api/Token/gettoken").subscribe((data) => {
      alert(JSON.stringify(data));
      localStorage.setItem("Token", JSON.stringify(data));
    }, (error) => {
      console.log(error);
    });
...