好的,这是我的问题: 我正在用javascript创建一个Windows 8商店应用程序,它从用C#编写的API中获取数据。商店一直在使用需要两个字段的几种方法(例如:发送员工ID和记录ID以验证记录是否属于员工并返回更多详细信息)。但是,出于某种原因,我有一种简单的拒绝工作的方法。这是控制器中的方法:
[HttpGet]
[ActionName("teste")]
public IEnumerable<EmployeeProjectViewModel> teste(int iUserMasterId, int iEmployeeOrganizationsId)
{
var Query = from eprojects in db.EmployeeProjects
where eprojects.UserMasterId == iUserMasterId
&& eprojects.Deleted == false
&& eprojects.EmployeeOrganizationsId == iEmployeeOrganizationsId
select new EmployeeProjectViewModel
{
EmployeeProjectsId = eprojects.EmployeeProjectsId,
UserMasterId = eprojects.UserMasterId,
Name = eprojects.ProjectName,
Month = eprojects.ProjectMonth,
Year = eprojects.ProjectYear,
URL = eprojects.ProjectURL,
Description = eprojects.ProjectDescription,
};
return Query;
}
routeConfig代码:
routes.MapHttpRoute(
name: "teste",
routeTemplate: "api/{controller}/teste/{iUserMasterId}/{iEmployeeOrganizationsId}",
defaults: new
{
action = "teste"
});
它给我的错误是404:在控制器中找不到方法(用Fiddler验证)。然而,控制器是正确的,因为控制器中有更多方法。我也注意到同一控制器中也使用多个字段的其他方法最终也失败了。 我究竟做错了什么?我已经将这些代码与我拥有的其他控制器进行了比较,这些控制器也适用于多个字段,它们似乎都运行良好。
编辑: 这是请求样本:
{"$id":"1","Message":"No HTTP resource was found that matches the request URI 'http://localhost:55105/api/EmployeeProjects/teste/8/2'.","MessageDetail":"No action was found on the controller 'EmployeeProjects' that matches the request."}
答案 0 :(得分:0)
解决了问题。显然我们之前的一些同事已经在routeconfig中编写了一些不完整的路由,从而阻止了它们下面的每条路径被识别。