尝试从角度httpclient调用asp.net web api时,方法不允许405

时间:2017-10-10 19:59:05

标签: angularjs asp.net-web-api angularjs-http

我正在尝试从我的Angular 4应用程序创建一个调用我的服务器,即asp.net web api,首先我在我的服务器中启用了cors,它似乎正常工作,现在当我试图打电话给我时方法不允许

WebApi.config:

public static void Register(HttpConfiguration config)
{
    var cors = new EnableCorsAttribute("*", "*", "*");
    config.EnableCors(cors);
    // Web API configuration and services
    // Configure Web API to use only bearer token authentication.
    config.SuppressDefaultHostAuthentication();
    config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

    // Web API routes
    config.MapHttpAttributeRoutes();



    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

控制器方法示例:

        [HttpGet, Route("api/authentication")]
    public IHttpActionResult Get(string username, string password)
    {
        var s = new ApartmentService();

        if (!s.CheckIfValidLogin(username, password))
        {
            return NotFound();
        }
        return Ok();
    }

客户代码:

public url = 'http://localhost:50743/api/authentication';

  login(username: string, password: string): Observable<any> {
    let params = new HttpParams();
    params.append('username', username);
    params.append('password', password);
    return this.http.get(this.url, {
      params: params,
      headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'),
    }).map((result: Response) => result.json());
  }

我还尝试使用标题内容类型:application / json并且还没有工作。

错误: error

如果我跟邮递员提出要求,它的工作正常......

感谢。

1 个答案:

答案 0 :(得分:0)

您正在向仅接受GET的端点发送POST请求,这是导致Method Not Allowed错误的原因。

使用POST发送您的请求。我不熟悉角度,但尝试类似

login(username: string, password: string): Observable<any> {
    let params = new HttpParams();
    params.append('username', username);
    params.append('password', password);
    return this.http.post(this.url, parems {
        headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'),
    }).map((result: Response) => result.json());
}

请参阅angular docs for http.post