And*_*ong 6 ninject asp.net-mvc-2
我已经从VS2008和MVC1向VS2010和MVC2更新了一个项目.我遇到Ninject没有在区域内找到控制器的问题
这是我的global.asax.cs文件:
namespace Website
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : NinjectHttpApplication
{
public static StandardKernel NinjectKernel;
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Balance",
"Balance/{action}/{month}/{year}",
new { controller = "Balance", action = "Index", month = DateTime.Now.Month, year = DateTime.Now.Year }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Login", action = "Index", id = "" } // Parameter defaults
);
}
/*
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
// initializes the NHProfiler so you can see what is going on with your queries
HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();
}
*/
protected override void OnApplicationStarted()
{
RegisterRoutes(RouteTable.Routes);
AreaRegistration.RegisterAllAreas();
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected void Application_Error(object sender, EventArgs e)
{
var errorService = NinjectKernel.Get<IErrorLogService>();
errorService.LogError(HttpContext.Current.Server.GetLastError().GetBaseException(), "AppSite");
}
protected override IKernel CreateKernel()
{
if (NinjectKernel == null)
{
NinjectKernel = new StandardKernel(new ServiceModule());
}
return NinjectKernel;
}
}
public class ServiceModule : NinjectModule
{
public override void Load()
{
Bind<IHelper>().To<Helper>().InRequestScope();
Bind<IErrorLogService>().To<ErrorLogService>();
Bind<INHSessionFactory>().To<NHSessionFactory>().InSingletonScope();
Bind<ISessionFactory>().ToMethod(ctx =>
ctx.Kernel.Get<INHSessionFactory>().GetSessionFactory())
.InSingletonScope();
Bind<INHSession>().To<NHSession>();
Bind<ISession>().ToMethod(ctx => ctx.Kernel.Get<INHSession>().GetSession());
}
}
}
Run Code Online (Sandbox Code Playgroud)
访问/ Controllers文件夹中的控制器工作正常,但访问/ Areas/Member/Controller中的控制器会引发以下错误:
Server Error in '/' Application.
Cannot be null
Parameter name: service
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentNullException: Cannot be null
Parameter name: service
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[ArgumentNullException: Cannot be null
Parameter name: service]
Ninject.ResolutionExtensions.GetResolutionIterator(IResolutionRoot root, Type service, Func`2 constraint, IEnumerable`1 parameters, Boolean isOptional, Boolean isUnique) +193
Ninject.Web.Mvc.NinjectControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +41
System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +66
System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +124
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +50
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +48
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8771488
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184
Version Information: Microsoft .NET Framework Version:4.0.30128; ASP.NET Version:4.0.30128.1
Run Code Online (Sandbox Code Playgroud)
此请求的Url是/ Member/Controller /,如果我也更改了Url/Controller控制器触发但我得到一个错误,系统无法在路径/视图中找到View
什么时候应该在/ Area/Members/Views中查找
我在升级中做错了什么或者我错过了一些东西但是我无法弄清楚是什么.我一直在努力解决这个问题3天......