不向 Angular 6 和 ASP.NET Core 中的服务器发送数据

Not sending data to server in Angular 6 and ASP.NET Core

我创建了一个服务器 ASP.NET 核心和前端 Angular 6.

我在Angular中创建了一个表单 6.在组件中,我创建了一个向服务层发送数据的函数,向服务器发送数据,但是没有进入服务器。它没有显示任何错误。

有什么问题吗?是后台还是前台?

User.ts

changeActive(id:number) {
    this.userService.GetUserById(id).subscribe((data) => {
        if(data.isActive)
        {
            data.isActive = false;
        } else {  
            data.isActive = true;
        }

        console.log("send data in service");
        this.userService.Active(data);
    })
}

Angular 服务:

public Active(user:IUser):Observable<IUser> {
    console.log("we get data from component");
    console.log(user);
    return this.http.post<IUser>(this.baseUrl + 'Active', user, { headers: this.headers })
               .pipe(tap((user: IUser) => this.log(`Active user w/ email=${user}`)),
                     catchError(this.handleError<IUser>('Active user'))
          );
}

ASP.NET核心控制器:

[HttpPut("Active")]
public async Task<ActionResult> ActiveAccount(User model)
{
        if (ModelState.IsValid)
        {
            var user = await _applicationUserManager.FindUserById(model.Id);
            user.IsActive = model.IsActive;
            await _applicationUserManager.UpdateAsync(user);
            return Ok();
        }

        return BadRequest();
}

针对您的问题一一检查以下几点:

  1. 调用subscribe处理Active

    this.userService.Active(data).subscribe(result => {
      console.log(result);
    });
    
  2. 不知道this.baseUrl的值是多少,应该是指向控制器地址。如果您的控制器是这样的,您需要将 api/sampledata 附加到您的基础 url,或者如果您的基础 url 是 http://localhost:port,您需要将 'Active' 更改为api/SampleData/Active

    [Route("api/[controller]")]
    public class SampleDataController : Controller
    
  3. 不确定您的 header 是什么,一般来说,您将请求作为 application/json 传递,通过添加 FromBody 更改如下所示的操作。

    [HttpPost("Active")]
    public async Task<ActionResult> ActiveAccount([FromBody]User model)
    {
        //your code.
    }
    
  4. 注意HttpPost,如果你从angular调用this.http.post<IUser>,你需要在控制器操作时使用HttpPost

  5. 还有一点,在浏览器中按F12调试您的客户端代码。