Breeze EntityQuery.from() withParameters POST to API 不工作
Breeze EntityQuery.from() withParameters POST to API not working
我有这个安宁的代码:
function getSopMatches(data) {
return EntityQuery.from('GetSopMatches')
.withParameters({
$method: 'POST',
$encoding: 'JSON',
$data: data
})
.using(manager).execute()
.then(success)
.catch(_queryFailed);
function success(response) {
return response.results;
}
}
它是通过这个调用的:
playerService.getSopMatches({ playerId: vm.player.id, competitionId: career.competitionId, seasonId: career.seasonId, teamId: career.teamId }).then(function (results) { //do something with it });
在我的 MVC 控制器 (BreezeController) 中,方法如下:
[HttpPost]
public IQueryable<object> GetSopMatches(SopMatch sop)
{
//this method is not called, I get a 405 Method not Allowed
}
不知何故,实际调用是 GET,而不是 POST,因此我收到 405 Method not Allowed 错误消息。
我在同一个项目中有其他代码(客户端 javascript/breeze 调用和服务器端 mvc 控制器方法)可以正常工作。
有谁知道我做错了什么,或者为什么要更改为 GET 方法?
经过一天的尝试和失败,我找到了解决方案。
我似乎在 angular 控制器中注入了 breeze,这就是导致问题的原因。当 breeze 被注入到控制器或服务中时,它会弄乱 POST 的 URL,因此您会收到 405(因为 URL 已更改)。
我有这个安宁的代码:
function getSopMatches(data) {
return EntityQuery.from('GetSopMatches')
.withParameters({
$method: 'POST',
$encoding: 'JSON',
$data: data
})
.using(manager).execute()
.then(success)
.catch(_queryFailed);
function success(response) {
return response.results;
}
}
它是通过这个调用的:
playerService.getSopMatches({ playerId: vm.player.id, competitionId: career.competitionId, seasonId: career.seasonId, teamId: career.teamId }).then(function (results) { //do something with it });
在我的 MVC 控制器 (BreezeController) 中,方法如下:
[HttpPost]
public IQueryable<object> GetSopMatches(SopMatch sop)
{
//this method is not called, I get a 405 Method not Allowed
}
不知何故,实际调用是 GET,而不是 POST,因此我收到 405 Method not Allowed 错误消息。
我在同一个项目中有其他代码(客户端 javascript/breeze 调用和服务器端 mvc 控制器方法)可以正常工作。
有谁知道我做错了什么,或者为什么要更改为 GET 方法?
经过一天的尝试和失败,我找到了解决方案。
我似乎在 angular 控制器中注入了 breeze,这就是导致问题的原因。当 breeze 被注入到控制器或服务中时,它会弄乱 POST 的 URL,因此您会收到 405(因为 URL 已更改)。