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语句。我在这里看到很多。简言之,答案是从此命名空间继承: