【发布时间】:2018-06-13 18:11:15
【问题描述】:
我有一个使用 Entity Framework 的 c# WEB API - 我正在尝试通过我的 Angular 前端发出一个 put 请求以模拟“签入”功能,但该请求没有通过。
这是我的 Web api 方法
[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();
}
这是我发起请求的两个 .ts 文件 -注意:在第二种方法中,我决定手动传递 ID 以进行测试
-checkIn(id: number){
if (confirm('Would you like to check in')) {
this.reservationService.checki(7);
};
}
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());
}
【问题讨论】:
-
最近在服务器上遇到了类似的 PUT 请求问题。事实证明,WebDAV 正在拦截请求,并且通常会让自己感到痛苦。 gavincoates.com/Archive/2016/07/…
标签: angular entity-framework api put http-method