C# web api找不到Get方法-500错误
当我试图调用web api以获得单个供应商时。它返回一个500错误 我试图突破Get(Guid id)的内部,但它从未进入 我知道它正在访问控制器,但似乎找不到Get(Guid id)函数 你知道为什么吗?我错过什么了吗 web api路由C# web api找不到Get方法-500错误,c#,.net,asp.net-web-api,C#,.net,Asp.net Web Api,当我试图调用web api以获得单个供应商时。它返回一个500错误 我试图突破Get(Guid id)的内部,但它从未进入 我知道它正在访问控制器,但似乎找不到Get(Guid id)函数 你知道为什么吗?我错过什么了吗 web api路由 config.Routes.MapHttpRoute( name: "Module", routeTemplate: "api/module/{controller}/{id}/{action}
config.Routes.MapHttpRoute(
name: "Module",
routeTemplate: "api/module/{controller}/{id}/{action}",
defaults: new { id = RouteParameter.Optional, action = RouteParameter.Optional }
);
api控制器
namespace App.WebUI.Controllers.api.Module
{
public class VendorsController : ApiController
{
private readonly UnitOfWork _repository = new UnitOfWork();
// GET api/Module/vendors
[HttpGet]
public HttpResponseMessage Get()
{
return all;
}
// GET api/Module/vendors/5
[HttpGet]
public HttpResponseMessage Get(Guid id)
{
return single
}
// POST api/Module/vendors
[HttpPost]
public HttpResponseMessage Post(Vendor vendor)
{
insert single
}
[HttpPut]
//PUT api/Module/Vendors
public HttpResponseMessage Put(Vendor vendor)
{
update single
}
}
}
这就是我要做的,让它工作
config.Routes.MapHttpRoute(
name: "Module",
routeTemplate: "api/module/{controller}/{id}/{action}",
defaults: new { id = RouteParameter.Optional, action = "DefaultAction" }
);
然后在默认操作(GET()、GET(id)、POST()、PUT()、DELETE())中,我添加了数据注释:[ActionName(“DefaultAction”)]这是内部错误,不是404。您是否有任何已注册或委派处理程序的全局操作筛选器?是否有错误消息?您正在调用的URL是什么?您的测试URL是什么?您的
routeTemplate
与您评论的URL不匹配。尝试api/module/{controller}/{action}/{id}
我想关于您的路由最让人困惑的是,我不理解为什么您要交换action
和id
参数。在路由中,您不能依赖操作
参数来识别有效端点,因为您无法具体识别哪个参数用于操作
,哪个参数用于id
,因为两者都没有约束。这似乎是一个很好的利用机会