Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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# OWIN-对象引用未设置为对象的实例_C#_Asp.net Mvc_Asp.net Identity_Owin_Asp.net Mvc 5.2 - Fatal编程技术网

C# OWIN-对象引用未设置为对象的实例

C# OWIN-对象引用未设置为对象的实例,c#,asp.net-mvc,asp.net-identity,owin,asp.net-mvc-5.2,C#,Asp.net Mvc,Asp.net Identity,Owin,Asp.net Mvc 5.2,我正在使用asp.net mvc 5开发一个web应用程序。但是我在使用用户帐户时遇到了一些错误。我创建了一个用户帐户,我想删除它,但在使用ajax jquery时遇到了以下问题。 我试图使用ajax请求删除一个用户帐户,但它给出了空对象引用的错误,因为由于ajax调用未启动Owin上下文 public class AdmissionsController : Controller { private ApplicationSignInManager _signInManager;

我正在使用asp.net mvc 5开发一个web应用程序。但是我在使用用户帐户时遇到了一些错误。我创建了一个用户帐户,我想删除它,但在使用ajax jquery时遇到了以下问题。 我试图使用ajax请求删除一个用户帐户,但它给出了空对象引用的错误,因为由于ajax调用未启动Owin上下文

 public class AdmissionsController : Controller
 {
    private ApplicationSignInManager _signInManager;
    private ApplicationUserManager _userManager;

    public AdmissionsController()
    {

    }

    public AdmissionsController(ApplicationUserManager userManager, ApplicationSignInManager signInManager)
    {
        UserManager = userManager;
        SignInManager = signInManager;
    }

    public ApplicationSignInManager SignInManager
    {
        get
        {
            return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>();
        }
        private set
        {
            _signInManager = value;
        }
    }

    public ApplicationUserManager UserManager
    {
        get
        {
            return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
        }
        private set
        {
            _userManager = value;
        }
    }




    //function to delete user account
    public async Task<object> DeleteUser(string id)
    {
        ApplicationDbContext context = new ApplicationDbContext();

        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }

        var user = await _userManager.FindByIdAsync(id);
        var logins = user.Logins;
        var rolesForUser = await _userManager.GetRolesAsync(id);

        using (var transaction = context.Database.BeginTransaction())
        {
            foreach (var login in logins.ToList())
            {
                await _userManager.RemoveLoginAsync(login.UserId, new UserLoginInfo(login.LoginProvider, login.ProviderKey));
            }

            if (rolesForUser.Count() > 0)
            {
                foreach (var item in rolesForUser.ToList())
                {
                    // item should be the name of the role
                    var result = await _userManager.RemoveFromRoleAsync(user.Id, item);
                }
            }

            await _userManager.DeleteAsync(user);
            transaction.Commit();
        }

        return new{success=true};

    }



}
我如何解决这个问题??? 我在以下行中得到错误:

  var user = await _userManager.FindByIdAsync(id);

这只是一个猜测,但在我看来,您并没有实例化
\u userManager
。您拥有进行此创建的相应属性。但是,在带有错误的行中,您使用私有字段。尝试使用以下属性:

var user = await UserManager.FindByIdAsync(id);

这将调用从owin上下文中获取此管理器的getter。

我们应该猜测哪一行抛出错误吗?
var user = await UserManager.FindByIdAsync(id);