为什么我的 ASP.NET Web API 路由可以与 Postman 配合使用,但不能与 Angular Post 请求配合使用

2023-12-09

我不知道这里发生了什么事。我有一个使用 ASP.NET Web API 的 POST 路由,它应该更改我的 SQL Server 中的一些数据。当我使用 Postman 测试 REST API 时,它可以工作,并且数据库中的数据已更改,响应也正常。但是一旦我使用 Angular5 将 json 发布到同一个数据库,它就会响应错误 405。这是我的代码...

首先,这是我的 MVC 应用程序的 POST 路由。

// POST api/<controller>
[Route("")]
[HttpPost]
public HttpResponseMessage Post([FromBody]BranchesInfo data)
{
    BranchesDB.updateBranchRow(data);
    var response = Request.CreateResponse<BranchesInfo>(HttpStatusCode.OK,data);
    return response;
}

邮递员的回复如下图所示。数据在数据库中成功更改,尽管它与发送的信息没有关联,因为在 updateBranchRow() 函数中调用的存储过程不响应任何资源,因此我组成了资源以返回传递的相同数据在。

在这里可以看到请求已被接收并且在PostMan中成功运行

enter image description here

现在,这是我的 Angular 代码,它使用服务来发布数据。

host: string = "http://localhost:57440/api/branches";

updateBranch(branchKey: Number, mainBranch: String, branchRegion: String, mainBranchFlag: Boolean) {
  var data = {
    BranchKey: branchKey,
    BranchName: mainBranch,
    BranchRegion: branchRegion,
    MainBranchFlag: mainBranchFlag
  }
  return this.http.post(this.host, data).map(res => res.json());
});

这是我尝试记录收到的响应后在浏览器控制台上遇到的错误的图像。

浏览器控制台响应:

enter image description here

我真的不明白我做错了什么。基于 REST 的请求如何与 Postman 一起工作,但在使用 Angular4 时却不起作用?


在 Global.asax.cs 文件中添加以下代码

protected void Application_BeginRequest()
    {
        if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
        {
            Response.Flush();
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 ASP.NET Web API 路由可以与 Postman 配合使用,但不能与 Angular Post 请求配合使用 的相关文章