Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度Http PUT不向Web API发送请求_Angular_Entity Framework_Api_Put_Http Method - Fatal编程技术网

Angular 角度Http PUT不向Web API发送请求

Angular 角度Http PUT不向Web API发送请求,angular,entity-framework,api,put,http-method,Angular,Entity Framework,Api,Put,Http Method,我有一个使用实体框架的c#WEB API——我试图通过我的角度前端发出put请求,以模拟“签入”函数,但请求没有通过 这是我的WebAPI方法 [HttpPut("checkin/{id}")] [AuthorizeRoles(Role.Administrator, Role.User)] public async Task<IActionResult> CheckIn(int id) { var reservation = await

我有一个使用实体框架的c#WEB API——我试图通过我的角度前端发出put请求,以模拟“签入”函数,但请求没有通过

这是我的WebAPI方法

   [HttpPut("checkin/{id}")]
    [AuthorizeRoles(Role.Administrator, Role.User)]
    public async Task<IActionResult> CheckIn(int id)
    {
        var reservation = await context.Reservations.FindAsync(id);
        var username = User.Identity.Name;

        if (reservation == null)
            return NotFound();

        // Ensure user is checking-in their own reservation and its not already checked-in
        if (reservation.UserName == username && reservation.CheckInDate == null)
        {
            reservation.CheckInDate = DateTime.Now;

            var count = await context.SaveChangesAsync();

            if (count < 1)
                return StatusCode((int)HttpStatusCode.InternalServerError);
        }

        return Ok();
    }
reservationservice.ts

 checki(id: number) {
    const headers = new Headers();
    const url = `${this.url}+/checkin/${7}`;
    return this.http
             .put(url, JSON.stringify(7), {headers: headers})
             .map(res => res.json());
  }

使用Angular HTTP客户端,所有HTTP请求都是可观察的,这意味着您需要订阅它们才能调用它们

因此,在签入功能中,您需要执行以下操作:

-checkIn(id: number){
  if (confirm('Would you like to check in')) {
   this.reservationService.checki(7).subscribe(res => {});
  };
}
不需要显式地处理响应


至于后端处理put,我会看看这个答案,从任何角度来说,我都不是c#专家

我做了指定的更改,请求不再挂起-但是,我不相信该方法已被执行,因为我的DbContext仍然是相同的-我已经发布了我的完整签入web api方法。如果您能将其签出,我将不胜感激。最近,服务器上的PUT请求也出现了类似问题。事实证明,WebDAV正在拦截请求,通常会让自己感到痛苦。
-checkIn(id: number){
  if (confirm('Would you like to check in')) {
   this.reservationService.checki(7).subscribe(res => {});
  };
}