Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复“对象引用未设置为对象的实例”?_C#_Asp.net Mvc_Dependency Injection_Ninject_Asp.net Mvc 4 - Fatal编程技术网

C# 如何修复“对象引用未设置为对象的实例”?

C# 如何修复“对象引用未设置为对象的实例”?,c#,asp.net-mvc,dependency-injection,ninject,asp.net-mvc-4,C#,Asp.net Mvc,Dependency Injection,Ninject,Asp.net Mvc 4,我在visual studio 2012 RC中创建了一个mvc4项目,并使用nuget添加了ninject.mvc3包。它创建了标准的NinjectWebCommon.cs文件,我对RegisterServices方法进行了如下编辑: private static void RegisterServices(IKernel kernel) { kernel.Bind<IProfileRepository>().To<ProfileRep

我在visual studio 2012 RC中创建了一个mvc4项目,并使用nuget添加了ninject.mvc3包。它创建了标准的NinjectWebCommon.cs文件,我对RegisterServices方法进行了如下编辑:

private static void RegisterServices(IKernel kernel)
        {
            kernel.Bind<IProfileRepository>().To<ProfileRepository>().InSingletonScope(); 
        }    
我想在我的帐户控制器中访问我的IProfileRepository,如下所示:

        private readonly IProfileRepository profileRepository;

        public AccountController(IProfileRepository repo){
            profileRepository = repo;
        }
        [AllowAnonymous]
        [HttpPost]
        public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                // Attempt to register the user
                MembershipCreateStatus createStatus;
                Membership.CreateUser(model.UserName, model.Password, model.Email, passwordQuestion: null, passwordAnswer: null, isApproved: true, providerUserKey: null, status: out createStatus);

                if (createStatus == MembershipCreateStatus.Success)
                {
                    profileRepository.CreateProfile(new UserProfile
                    {
                        UserId = (Guid)Membership.GetUser(HttpContext.User.Identity.Name).ProviderUserKey,
                        FirstName = model.FirstName,
                        LastName = model.LastName,
                        School = model.School,
                        Major = model.Major
                    });
                    FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError("", ErrorCodeToString(createStatus));
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
调用profileRepostory对象时,我得到的对象引用没有设置为对象错误的实例,因此它可能没有被注入。有人知道怎么了吗?谢谢

编辑: 这是我的global.asax文件:

public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }

除非更改配置,否则Ninject将抛出ActivationException,而不是为依赖项注入null。您应该检查哪个对象真正为空


例如,允许匿名访问意味着HttpContext.User就是null。

除非您更改配置,否则Ninject将抛出ActivationException,而不是为依赖项注入null。您应该检查哪个对象真正为空


例如,允许匿名访问意味着HttpContext.User是空的。

只是为了确保:您的Ninject依赖项解析程序是否已在MVC中注册?请检查NinjectWebCommon.cs文件的内容好吗?是否有类似DependencyResolver.SetResolver…?@STO没有,我如何添加它?请检查此项以确保:您的Ninject依赖项解析程序是否已在MVC中注册?请检查NinjectWebCommon.cs文件的内容好吗?是否有类似DependencyResolver.SetResolver…?@STO没有,我如何添加它?请检查此项
public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }