【发布时间】:2018-01-15 02:14:14
【问题描述】:
我正在使用 VS 2017 社区。我多年来一直在构建 web api。但是一定有什么改变了,因为我无法让最简单的例子起作用。
我在控制器文件夹中有一个简单的控制器
public class TestApi : ApiController
{
// GET api/<controller>
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
我在应用程序启动中有必要的代码:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
但是当我尝试使用 get 测试 web api 时:
http://localhost:54014/api/testapi
我总是收到一条 xml 消息
Error
Message
No HTTP resource was found that matches the request URI
'http://localhost:54014/api/testapi'.
/Message
MessageDetail
No type was found that matches the controller named 'testapi'.
/MessageDetail
/Error
这里是 WebApiConfig.cs
public static class WebApiConfig
{
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 }
);
}
}
我在这个问题上头疼了几个小时。正如我所说,我已经构建了许多 MS Web api 实现,而这个让我感到困惑。
【问题讨论】:
-
尝试将您的控制器重命名为 TestApiController。
-
谢谢...试过了,但仍然得到相同的错误,只有控制器名为更改。
-
@patcapozzi 显示 WebApiConfig.cs.
-
将 WebApiConfig.cs 添加到问题中
-
我认为如果您使用名称
TestApiController,它应该可以工作。尝试创建名称为ProductController的新 Web api 并检查它是否正常工作。
标签: c# asp.net-mvc asp.net-web-api2 asp.net-web-api-routing