我有一个web api控制器,直到现在它只有一个动作,一切正常。我试图添加第二个动作,我无法让它可以访问。
以下是工作操作的方法主体的方法签名和剪辑:
[Route("data/add")]
[HttpPost]
public HttpResponseMessage Add(Message item)
{
using(var ctx = new dbContext())
{
// add new message using EF. snip
}
}
我遇到问题的操作的方法体的方法签名和剪辑是:
[Route("data/check")]
[HttpPost]
public HttpResponseMessage Check(DateTime date)
{
using (var ctx = new dbContext())
{
// check if any messages after param date
// snip
}
}
这是我的路线配置。
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "Notification",
routeTemplate: "{controller}/check"
);
}
有趣的是我的其他行动,正在运作的行动,可以通过
访问数据/添加
这似乎与路由相矛盾。
编辑:我从邮递员那里得到的消息是
未找到与请求URI“http://localhost:62243/data/check”
匹配的HTTP资源
答案 0 :(得分:0)
尝试将路由更改为默认路由,并仅通过以下属性进行路由:
//Add this to your Controller
[RoutePrefix("api/{controller}")]
public class YourController:ApiController
{
//Whatever code
// Only part-route necessary.
[Route("add")]
[HttpPost]
public HttpResponseMessage Add(Message item)
{
using(var ctx = new dbContext())
{
// add new message using EF. snip
}
}
// Like before
[Route("check")]
[HttpPost]
public HttpResponseMessage Check(DateTime date)
{
using (var ctx = new dbContext())
{
// check if any messages after param date
// snip
}
}
}