【发布时间】:2019-03-05 19:11:29
【问题描述】:
我正在使用 web 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>
谁能指出我做错了什么?
【问题讨论】:
-
如果您删除
config.MapHttpAttributeRoutes()是否有效?我可能是错的,但如果您使用该选项,我认为您还需要使用路由上的属性,例如[Route("api/test/{id}")] -
刚试过 - 还是不行。 :(
-
@Savio,为什么
"test"会路由到“Get”? -
@KirkWoll 当您从 VS2013 创建 WebApi 项目(使用模板)时,它可以工作,控制器有一个 Get 方法,它返回 2 个值,您可以使用
http://localhost:52192/api/values调用它。我的项目和模板项目的路由看起来都一样。 -
我刚刚在我正在处理的 WebAPI 项目中尝试了您的代码,它运行良好。您是否在其他任何地方配置路线?
标签: c# asp.net-web-api