我创建了一个Web.API,MVC应用程序但在尝试测试时遇到了一些麻烦。我收到这个错误:
" {"消息":"未找到与请求URI匹配的HTTP资源' http://localhost:60104/api/order/SayWhat/33'。", " MessageDetail":"未找到与命名为' order'。"}"
的控制器匹配的类型
OrderController
[System.Web.Http.HttpGet]
public string SayWhat(string quoteName)
{
return "Hello World " + quoteName;
}
WebApiConfig
config.Routes.MapHttpRoute(
name: "DefaultPostApi",
routeTemplate: "api/{controller}/{action}/{quote}"
);
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
答案 0 :(得分:3)
在WebApiConfig.cs中使用以下代码
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{quoteName}",
defaults: new { quoteName = RouteParameter.Optional }
);
}
在控制器中:
[HttpGet]
[ActionName("SayWhat")]
public string SayWhat(string quoteName)
{
return "Hello World " + quoteName;
}
答案 1 :(得分:0)
尝试添加属性" ActionName"这个功能。
[System.Web.Http.HttpGet()]
[ActionName("SayWhat")]
public string SayWhat(string quoteName)
{
return Convert.ToString("Hello World ") + quoteName;
}
答案 2 :(得分:0)
错误消息表明它没有看到订单控制器。
“找不到与名为'order'的控制器匹配的类型。”
鉴于您表明您确实拥有resA
,那么一种可能性是控制器的类型不正确,因为框架会查找从OrderController
继承的类型。
确保控制器的类型正确
ApiController