Bot*_*Bao 53 asp.net asp.net-web-api
我收到一个错误 - 没有找到与请求匹配的控制器'Action'的操作.
网址是http://localhost:37331/api/action/FindByModule/1.
我使用的路由是
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
控制器:
public class ActionController : ApiController
{
private IActionRepository repository = null;
[HttpGet]
[ActionName("All")]
public IEnumerable<JsonAction> All()
{
return from action in this.repository.Get()
select new JsonAction
{
ID = action.ID,
Text = action.Text.Trim(),
Description = action.Description.Trim(),
};
}
[HttpGet]
[ActionName("FindByModule")]
public IEnumerable<JsonAction> FindByModule(Int64 moduleId)
{
return from action in this.repository.FindByModule(moduleId)
select new JsonAction
{
ID = action.ID,
Text = action.Text.Trim(),
Description = action.Description.Trim(),
};
}
}
Run Code Online (Sandbox Code Playgroud)
tpe*_*zek 111
这是因为参数名称不匹配.从您的路线中,值1被分配给参数named id,您的操作正在查找名为的参数moduleId.
第一个选择是改变你的路线,如下所示:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{moduleId}",
defaults: new { moduleId = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
其次是像这样更改你的URL:
http://localhost:37331/api/action/FindByModule?moduleId=1
Run Code Online (Sandbox Code Playgroud)
所以参数名称匹配.
| 归档时间: |
|
| 查看次数: |
76797 次 |
| 最近记录: |