Web.API 无法测试操作
本文关键字:测试 操作 API Web | 更新日期: 2023-09-27 17:56:40
我创建了一个Web.API,MVC应用程序,但在尝试测试它时遇到了一些麻烦。我收到此错误:
"{"消息":"未找到与请求 URI 'http://localhost:60104/api/order/SayWhat/33'匹配的 HTTP 资源。","消息详细信息":"未找到与名为"order"的控制器匹配的类型。"}"
订单控制器
[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"));
在
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;
}
尝试将属性"ActionName"添加到函数中。
[System.Web.Http.HttpGet()]
[ActionName("SayWhat")]
public string SayWhat(string quoteName)
{
return Convert.ToString("Hello World ") + quoteName;
}
错误消息指示它看不到订单控制器。
"未找到与名为'order'的控制器匹配的类型。"
鉴于您指出您确实有OrderController
那么一种可能性是控制器的类型不正确,因为框架会查找从ApiController
继承的类型。
确保控制器的类型正确
public class OrderController : ApiController {
//GET api/Order/saywhat/33
[System.Web.Http.HttpGet]
public string SayWhat(string quote) {
return "Hello World " + quote;
}
}