【发布时间】:2018-01-27 18:08:12
【问题描述】:
我有现有的项目 ASP.NET MVC 4。我想添加到项目 WebApi2。所以我在 Nuget 中安装了 WebApi2 并创建了 ApiController。当我运行项目时出现错误
IControllerFactory 'MvcApplication.Infrastructure.NinjectControllerFactory' 没有返回名称为 'api' 的控制器。
我的 NinjectControllerFactory:
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory()
{
ninjectKernel = KernelSingleton.Instance.GetStandardKernel();
}
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
return controllerType == null
? null
: (IController)ninjectKernel.Get(controllerType);
}
}
编辑
WebApiConfig:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// TODO: Add any additional configuration code.
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Main RouteConfig 是空的,因为我有两个区域。
internal static class RouteConfig
{
internal static void RegisterRoutes(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
internal static class RouteConfig
{
internal static void RegisterRoutes(AreaRegistrationContext context)
{
context.MapRoute(
"User_default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
【问题讨论】:
-
请发布您的 WebApi 路由和 MVC 路由。听起来问题就在那里。
标签: c# asp.net-mvc-4 asp.net-web-api dependency-injection ninject