我正在使用打字稿开发angular2 +应用程序。我试图为我的Angular2 Kendo网格之一提取数据,并进行以下调用以获取结果以填充网格。在此网络电话中,我将发送状态ID,跳过并获取和一个Sort数组,其中包含要排序的字段以及排序的方向。
下面是我的打字稿代码,它可以调用Web服务:
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服务时,我收到一条错误消息:
“错误,状态为:405,URL不允许使用方法:
http://localhost/Services/RequestService/api/Dashboard/GetUserRequestsByStatuses”
我检查了正在发送的请求对象,这看起来像
{"Filter":{"Field":"StatusId","Value":2,"Operator":"eq"},"Skip":0,"Take":5,"Sort":[{"field":"CreatedDate","dir":"desc"}]}
同样在响应正文中,我看到以下消息:
{“消息”:“请求的资源不支持http方法
'POST'。“}
自星期五以来,我一直在研究此问题,因此无法提出解决方案。任何帮助表示赞赏。我认为这可能与我通过打字稿发送请求对象有关。
最佳答案
该错误表明方法POST
不被支持,但操作具有HttpGet
属性。
您需要将HttpGet
更改为HttpPost
。
[HttpPost]
public HttpResponseMessage GetUserRequestsByStatuses([FromBody] DataRequest model)
{
DataResponse<AngKendoGridDashboard> response =
BusinessAccess.GetUserRequestsByStatuses(model);
return CreateHttpResponse(response);
}
您也可能会丢失
[FromBody]
属性,这是给定参数类型的默认属性。关于javascript - URL Angular2 + typescript Webapp不允许使用405方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48383435/