我在这个文件夹结构中有一个控制器:
Site
-Controllers
--API
---EventsController.cs
EventsController.cs包含以下内容:
[RoutePrefix("api")]
public class EventsController : Controller
{
[Route("event")]
public ActionResult Index()
{
return View("~/Views/Home/Index.cshtml");
}
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 }
);
}
当我从Visual Studio运行该站点并尝试访问http://127.0.0.1:8080/api/event时,除了以下错误之外什么也看不到:
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://127.0.0.1:8080/api/event'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'event'.
</MessageDetail>
</Error>
如果我注释掉config.Routes.MapHttpRoute行,使WebApiConfig.cs如下所示,上面的config.Routes.MapHttpRoute就可以工作了:
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 }
//);
}
我做错了什么?配置DefaultApi路由时,是什么原因导致属性路由失败?我试着把它放在config.MapHttpAttributeRoutes()的前面/后面,都不管用。
顺便说一句,我在阅读下面的文章时手动构建了这个项目,它与MVC/Web API项目具有相同的结构,并且确实可以工作。我就是想不出我做了什么不一样的事。
发布于 2017-01-19 15:24:49
多亏了@phil-cooper,answer才能继承控制器中正确的基类。
https://stackoverflow.com/questions/41736140
复制相似问题