【发布时间】:2015-05-11 23:10:25
【问题描述】:
API
[RoutePrefix("api/diagnostics")]
public class DiagnosticsController : ApiController
{
[HttpPost]
[Route("pings")]
public IHttpActionResult Pings(Ping ping)
{
}
}
Ping
public class Ping
{
public Guid ServerKey {get;set;}
public DateTime CreatedDateTime {get;set;}
}
我正在尝试使用 Postman 应用程序测试课程。这是Screenshot。
我收到的信息是:
{
"message": "No HTTP resource was found that matches the request URI 'http://localhost:61668/api/diagnostics/pings'.",
"messageDetail": "No action was found on the controller 'Diagnostics' that matches the request."
}
我不明白为什么它与诊断控制器中的发布操作不匹配。唯一配置的其他路由是默认路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{key}",
defaults: new { key = RouteParameter.Optional }
);
还启用了属性路由:config.MapHttpAttributeRoutes();
【问题讨论】:
-
仔细查看您查询的 URL。屏幕截图与您的错误消息不对应。如果这是一个小疏忽:您绝对确定您的本地服务器在您发送请求的那一刻正在运行?如果停止调试,主机也会消失。
-
@Jeroen 这是一个疏忽。我再次发布了屏幕截图。是的,服务器正在运行。
-
我不明白为什么你的代码不应该工作。您是否以某种方式缩小了问题范围?如果您的方法不采用
Ping对象,它是否有效?考虑使用可为空的值而不是 Guid/DateTime。你能用这些类作为最低限度创建一个新项目,然后它可以工作吗?
标签: c# asp.net asp.net-web-api routing