【发布时间】:2017-11-03 06:00:45
【问题描述】:
我有一个 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"
);
}
有趣的是我的另一个动作,正在工作的动作,可以通过
访问数据/添加
这似乎与路由相矛盾。
编辑:我从 Postman 收到的消息是
未找到与请求 URI 'http://localhost:62243/data/check'匹配的 HTTP 资源
【问题讨论】:
-
您使用的是哪个版本的 Asp.Net?
-
v4.0.30319 @Nikolaus
-
你的控制器上也有路由属性吗?
-
如果你删除会发生什么:config.Routes.MapHttpRoute(name: "Notification", routeTemplate: "{controller}/check");
-
@Nikolaus 路线在原帖中
标签: c# asp.net-web-api