调用.net Web API时,Angular Delete方法不会通过飞行前请求

时间:2019-05-03 13:36:02

标签: angular cors asp.net-web-api2

我在UsersController上有delete方法:

public async Task<IHttpActionResult> DeleteUser(Guid id)
        {
            User user = await db.Users.FindAsync(id);
            if (user == null)
            {
                return NotFound();
            }

            db.Users.Remove(user);
            await db.SaveChangesAsync();

            return Ok();
        }

我已经通过安装软件包,在WebApiConfig中启用cors并将其添加到web.config中来启用了Cors:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>

我在前端使用Angular,并且在需要删除方法的地方提供服务:

public delete = (route: string) => {
    return this.http.delete(this.createCompleteRoute(route, environment.urlAddress));
  }

当我使用此功能拨打电话时,网址为:http://localhost:52474/api/Users/"some guid",但通话失败,表明未通过飞行前请求。我是否需要在配置中添加其他内容?

1 个答案:

答案 0 :(得分:0)

我注释掉了web.config中的设置,并在控制器顶部添加了vlookup,现在它可以正常工作了。