405不允许使用URL angular2 + typescript webapp的方法

时间:2018-01-22 14:07:27

标签: javascript c# angular typescript http-status-code-405

我正在开发一个带有打字稿的angular2 +应用程序。我正在尝试为我的一个Angular2 Kendo网格提取数据并进行以下调用以获得结果以填充网格。在这个Web调用中,我发送一个状态ID,跳过并获取一个Sort数组,其中包含我想要排序的字段以及我希望它排序的方向。

以下是我打字电话的打字代码:

  getUserRequests(statusId: number, skip: number, take: number, sort: SortDescriptor[]): Observable<GridResult> {
                     private getUserRequestsUrl = environment.serviceHostName + environment.serviceAppURL + '/api/Dashboard/GetUserRequestsByStatuses';

        var headers = new Headers();
        headers.append('Content-Type', 'application/json;');

        return this.http.post(this.getUserRequestsUrl, JSON.stringify({ "Filter": { "Field": "StatusId", "Value": statusId, "Operator": "eq" },
 "Skip": skip, "Take": take, "Sort": sort }), { headers: this.headers }).share()
            .map((res: Response) => res.json())
            .map(response => (<GridResult>{
                data: response.Data ,
                total: response.Count
            }));

    }

这是我的服务端代码,永远不会受到影响。

[HttpGet]
public HttpResponseMessage GetUserRequestsByStatuses([FromBody] DataRequest model)
{
    DataResponse<AngKendoGridDashboard> response =
        BusinessAccess.GetUserRequestsByStatuses(model);
    return CreateHttpResponse(response);
}

我面临的问题: 出于某种原因,在进行此Web服务调用时,我收到错误消息

  

&#34;错误状态响应:405不允许使用URL的方法:   http://localhost/Services/RequestService/api/Dashboard/GetUserRequestsByStatuses&#34;   我检查了正在发送的请求对象,这里看起来像

{"Filter":{"Field":"StatusId","Value":2,"Operator":"eq"},"Skip":0,"Take":5,"Sort":[{"field":"CreatedDate","dir":"desc"}]}

同样在回复正文中,我看到了这样的信息:

  

{&#34; Message&#34;:&#34;请求的资源不支持http方法   &#39; POST&#39;&#34;}

自上周五以来我一直在关注这个问题,无法提出解决方案。任何帮助表示赞赏。我认为这可能与我如何通过打字稿发送我的请求对象有关。

1 个答案:

答案 0 :(得分:2)

错误表示不支持方法POST,但该操作具有HttpGet属性。

您需要将HttpGet更改为HttpPost

[HttpPost]
public HttpResponseMessage GetUserRequestsByStatuses([FromBody] DataRequest model)
{
    DataResponse<AngKendoGridDashboard> response = 
        BusinessAccess.GetUserRequestsByStatuses(model);
    return CreateHttpResponse(response);
}

您也可能会丢失[FromBody]属性,这是参数类型的默认值。