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

One*_*hi_ 2 rest asp.net-mvc angular

我不知道这是怎么回事。我有一个使用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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

在此处输入图片说明

现在,这是我的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());
});
Run Code Online (Sandbox Code Playgroud)

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

在浏览器控制台上的响应:

在此处输入图片说明

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

Par*_*iya 6

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

protected void Application_BeginRequest()
    {
        if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
        {
            Response.Flush();
        }
    }
Run Code Online (Sandbox Code Playgroud)