为了账号安全,请及时绑定邮箱和手机立即绑定

ASP NET web api POST/DELETE(Angular 6 HttpClient-)

ASP NET web api POST/DELETE(Angular 6 HttpClient-)

C#
慕工程0101907 2022-06-19 16:36:34
我使用 Visual Studio 15 创建了一个应用程序,使用 ASP.NET Web api 作为后端,在前端使用 Angular 6。我只是想根据数据库中的数据在前端显示/添加/删除用户。我使用 Angular 6 中的 HttpClient 和 GET-Request 来显示用户数据工作正常。我尝试以相同的方式实现 POST/DELETE 请求。这是来自 Angular 的调用:deleteUser(id: number): Observable<{}> {    const url = `${this.userURL}/${id}`;    return this.http.delete(url, { withCredentials: true })        .pipe(            catchError(this.handleError('deleteData'))        );}web API:我在 Global.asax.cs 中处理了预检请求:void Application_PreSendRequestHeaders(Object sender, EventArgs e)    {        var origin = Request.Headers.Get("Origin");        var validOrigins = ConfigurationManager.AppSettings["allowedCorsOrigins"].Split(',');        if (validOrigins.Any(o => o == origin))        {            Response.StatusCode = (int)HttpStatusCode.OK;            Response.Headers.Set("Access-Control-Allow-Origin", origin);            Response.Headers.Set("Access-Control-Allow-Credentials", "true");            Response.Headers.Set("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, access-control-allow-credentials, access-control-allow-headers, access-control-allow-methods, access-control-allow-origin, ontent-type, Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization"); // "Content-Type, Accept, Authorization, withcredentials, Prefer"            Response.Headers.Set("Access-Control-Expose-Headers", "Claims, *");            Response.Headers.Set("Access-Control-Allow-Methods", "GET,PUT,POST,OPTIONS,PATCH,DELETE");        }    }
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

[Route("api/User/{id}")]我只是通过在下面插入来解决我的问题[HttpDelete]。UserController.cs 中的删除函数现在看起来像:


[HttpDelete]

[Route("api/User/{id}")]

[ResponseType(typeof(User))]

public async Task<IHttpActionResult> DeleteUser(decimal id)

{

    ...

}


查看完整回答
反对 回复 2022-06-19
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

我对此并不完全确定,但您可以尝试将您的函数签名更改为DeleteUser(int id)(老实说,十进制 id 参数看起来很烦人:))并检查您的配置文件路由模板(routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional })是否与您的参数名称匹配(在这种情况下为 id) . 希望这能解决您的问题。



查看完整回答
反对 回复 2022-06-19
  • 2 回答
  • 0 关注
  • 183 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号