Asp.net mvc 在子文件夹中找不到具有属性路由的Web API控制器

Asp.net mvc 在子文件夹中找不到具有属性路由的Web API控制器,asp.net-mvc,asp.net-web-api,asp.net-mvc-routing,Asp.net Mvc,Asp.net Web Api,Asp.net Mvc Routing,我在此文件夹结构中有一个控制器: Site -Controllers --API ---EventsController.cs EventsController.cs包含以下内容: [RoutePrefix("api")] public class EventsController : Controller { [Route("event")] public ActionResult Index() { return View("~/Views/Home

我在此文件夹结构中有一个控制器:

Site
-Controllers
--API
---EventsController.cs
EventsController.cs包含以下内容:

[RoutePrefix("api")]
public class EventsController : Controller
{
    [Route("event")]
    public ActionResult Index()
    {
        return View("~/Views/Home/Index.cshtml");
    }
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 }
    );
}
WebApiConfig.cs包含以下内容:

[RoutePrefix("api")]
public class EventsController : Controller
{
    [Route("event")]
    public ActionResult Index()
    {
        return View("~/Views/Home/Index.cshtml");
    }
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运行站点并尝试访问时,只看到以下错误:

<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>
我做错了什么?配置DefaultApi路由时,是什么导致属性路由失败?我尝试将其放在config.maphttpAttribute路由之前/之后;两者都不起作用

顺便说一句,我在阅读下面的文章时手动构建了这个项目,它与MVC/WebAPI项目的结构相同,并且可以正常工作。我只是不知道我做了什么不同


多亏了was在api控制器中继承了正确的基类。

这不是很明显,但确实突出的是您的EventsController,它看起来继承了Mvc控制器,而不是api控制器。另外,EventsController的意图是什么?它是否是一个Mvc控制器,返回一个视图,但带有/api/路由?我猜属性路由正在变得混乱,因为它在Mvc控制器上。谢谢!只有3个角色不合适,一切都很疯狂!没问题,很高兴它能工作。那么您是如何继承正确的基类的呢。我也有同样的问题,但不确定你删除了哪3个字符来解决这个问题。你是如何修复它的?啊,正确的意思是来自Api名称空间的EventsController,而不是Mvc名称空间。稍后我将尝试用正确的行更新我发布的答案,但我也没有发布问题中的using语句。我在这里看到很多。简言之,答案是从此命名空间继承: