【发布时间】:2013-07-13 04:52:43
【问题描述】:
我收到以下黄屏死机“IControllerFactory 'Ninject.Web.Mvc.NinjectControllerFactory' 没有返回名称为 'Products' 的控制器。”为什么?这是我的设置
更新 此配置适用于我的计算机,但不适用于我同事的计算机,即使我们的计算机具有相同的代码和配置。
代码
public class MvcApplication : NinjectHttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Products", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected override void OnApplicationStarted()
{
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected override IKernel CreateKernel()
{
var modules = new INinjectModule[]
{
new WebModule()
};
return new StandardKernel(modules);
}
}
public class WebModule : NinjectModule
{
public override void Load()
{
Bind<IAuthoringRepository>()
.ToProvider(new AuthoringProvider())
.InSingletonScope();
Bind<ICatalogEntity>()
.ToProvider(new ProductProvider())
.InSingletonScope();
Bind<TargetData>()
.ToProvider(new TargetDataProvider()).InSingletonScope();
}
}
public class AuthoringProvider : Provider<IAuthoringRepository> {
protected override IAuthoringRepository CreateInstance(IContext context)
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
IAuthoringRepository result = RepositoryFactory.CreateAuthoringRepository(identity);
return result;
}
}
public class TargetDataProvider : Provider<TargetData>
{
protected override TargetData CreateInstance(IContext context)
{
return new TargetData { Language = Language.En, Province = Province.ON };
}
}
public class ProductProvider : Provider<Product>
{
protected override Product CreateInstance(IContext context)
{
return new Product();
}
}
更多错误信息 IControllerFactory 'Ninject.Web.Mvc.NinjectControllerFactory' 没有返回名称为 'Products' 的控制器。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详情:
System.InvalidOperationException:IControllerFactory 'Ninject.Web.Mvc.NinjectControllerFactory' 没有返回名称为 'Products' 的控制器。
来源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[InvalidOperationException: The IControllerFactory 'Ninject.Web.Mvc.NinjectControllerFactory' did not return a controller for the name 'Products'.]
System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +365
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +160
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +80
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +45
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8837208
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184
【问题讨论】:
-
你有一个名为
ProductsController的类吗? -
是的。里面有很多代码,所以我没有发布它。
标签: asp.net-mvc asp.net-mvc-2 ninject