由于405 HTTP状态码,无法调用DELETE webapi方法

时间:2019-08-24 08:52:57

标签: asp.net-core asp.net-core-webapi

我用.NET Core 3.0 Preview编写了API,并使用Angular 8作为前端。 我在用户控制器上有一种方法叫做DeleteUser。这是方法:

//DELETE users/d18da620-6e4d-4b1c-a1ec-36d89145f4ca
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteUser(Guid id) {
    ...
}

因此,当使用Angular执行请求时,如下所示:

this.usersApiService.deleteUser(userId).subscribe((data) => {
    ...
}

执行此调用后,在Visual Studio中得到以下输出:

Microsoft.AspNetCore.Cors.Infrastructure.CorsService:Information: CORS policy execution successful.
Microsoft.AspNetCore.Routing.EndpointMiddleware:Information: Executing endpoint '405 HTTP Method Not Supported'

但是,我已经设置了自定义CORS策略。在ConfigureServices中,我有这个:

services.AddCors(options => {
    options.AddPolicy("CorsPolicy",
        builder => builder
            .AllowAnyMethod()
            .AllowCredentials()
            .SetIsOriginAllowed((host) => true)
            .AllowAnyHeader());
});

在“配置”方法中,我使用以下策略:

app.UseCors("CorsPolicy");

所以我的问题是,如何成功调用此delete方法?我想念什么?

编辑:这是我的调用api的deleteUser方法

public deleteUser(userId) {
    const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type' : 'application/json'
      }),
      body: {
        id: userId
      }
    };
    return this.httpClient.delete(this.USERSENDPOINT, httpOptions);
}

1 个答案:

答案 0 :(得分:1)

更新: 尝试像这样以角度调用您的方法:

  

this.httpClient.delete(this.USERSENDPOINT +“ /” + userId);

希望有帮助