我正在使用网络API构建我的第一个应用,我偶然发现了一个无法找到相关信息的问题。
使用样本控制器测试其是否正常工作:
public class TestController : ApiController
{
// GET api/test
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
WebApiConfig.cs:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
每次我尝试使用http://localhost:59502/api/test
来调用服务时
我正在
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:59502/api/test'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'test'.
</MessageDetail>
</Error>
有人可以指出我做错了什么吗?
答案 0 :(得分:1)
要确定要调用的操作,框架使用路由表。 Web API的Visual Studio项目模板创建了一个默认路由:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
使用默认路由模板,Web API使用HTTP方法选择操作。但是,您也可以创建一个路径,其中操作名称包含在URI中:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这样您就可以访问您的网址......... / api / test
答案 1 :(得分:0)
我实际上已经解决了这个问题 - 通过创建新项目,并复制所有类。 现在一切都很完美。
&#34;您是否尝试过将其关闭再打开?&#34;哦,好吧..
答案 2 :(得分:0)
我的问题是我没有在文件名中添加“ Controller”后缀(复制了另一个控制器并重命名了)
只需在文件名和类名的末尾添加Controller。