Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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# ASP.NET标识更新同步返回';对象未设置为对象的实例';从visual studio 2015转换到2017年后_C#_Asp.net Mvc_Visual Studio_Asp.net Web Api_Asp.net Identity - Fatal编程技术网

C# ASP.NET标识更新同步返回';对象未设置为对象的实例';从visual studio 2015转换到2017年后

C# ASP.NET标识更新同步返回';对象未设置为对象的实例';从visual studio 2015转换到2017年后,c#,asp.net-mvc,visual-studio,asp.net-web-api,asp.net-identity,C#,Asp.net Mvc,Visual Studio,Asp.net Web Api,Asp.net Identity,我的ASP.NET标识更新同步停止工作,代码没有任何更改。我曾与Visual studio 2015合作过这个项目,但最近搬到了2017年。我还将可视化的IIS express更改为完整的IIS。在更新用户数据时,除了updateAsync之外,其他一切都可以正常工作 当我调用用户管理器时,它抛出一个无声错误“Object not set to a instance of a Object”。令人困惑的是,同一个用户管理器用于创建新用户、获取用户集合等。只有UpdateSync失败。我只想弄清楚

我的ASP.NET标识更新同步停止工作,代码没有任何更改。我曾与Visual studio 2015合作过这个项目,但最近搬到了2017年。我还将可视化的IIS express更改为完整的IIS。在更新用户数据时,除了updateAsync之外,其他一切都可以正常工作

当我调用用户管理器时,它抛出一个无声错误“Object not set to a instance of a Object”。令人困惑的是,同一个用户管理器用于创建新用户、获取用户集合等。只有UpdateSync失败。我只想弄清楚是什么导致了这种行为:

public class AppUser : IdentityUser<int, AppUserLogin, AppUserRole, AppUserClaim>, IUser<int>
{
    [Index("EmployeeNumberIndex",IsUnique = true)]
    public int EmployeeNumber { set; get; }

    public virtual string FirstName { set; get; }

    public virtual string MiddleName { set; get; }

    public virtual string LastName { set; get; }

    public virtual string Sex { set; get; }

    public virtual DateTime DateOfBirth { set; get; }

    public virtual int UserType { set; get; }  // 0 for normall memebers and 1 for admin

    public virtual DateTime DateJoined { set; get; }

    public virtual string ProfileImage { set; get; }

    public virtual string DepartmentName { set; get; }

    public virtual string Jobdescription { set; get; }

    public virtual string Password { set; get; }

    public virtual int PasswordChanged { set; get; }

    // guarantors details
    public virtual string Guarantor1FullName { set; get; }
    public virtual string Guarantor1Address { set; get; }
    public virtual string Guarantor1PhoneNumber { set; get; }
    public virtual string Guarantor1Email { set; get; }

    public virtual string Guarantor2FullName { set; get; }
    public virtual string Guarantor2Address { set; get; }
    public virtual string Guarantor2PhoneNumber { set; get; }
    public virtual string Guarantor2Email { set; get; }




    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(AppUserManager manager, string authenticationType)
    {
        var userIdentity = await manager.CreateIdentityAsync(this, authenticationType);
        // Add custom user claims here
        return userIdentity;
    }

}
公共类AppUser:IdentityUser,IUser
{
[索引(“EmployeeNumber索引”,IsUnique=true)]
public int EmployeeNumber{set;get;}
公共虚拟字符串FirstName{set;get;}
公共虚拟字符串MiddleName{set;get;}
公共虚拟字符串LastName{set;get;}
公共虚拟字符串Sex{set;get;}
公共虚拟日期时间出生日期{set;get;}
公共虚拟int用户类型{set;get;}//0表示普通成员,1表示管理员
公共虚拟日期时间日期联接{set;get;}
公共虚拟字符串配置文件映像{set;get;}
公共虚拟字符串DepartmentName{set;get;}
公共虚拟字符串Jobdescription{set;get;}
公共虚拟字符串密码{set;get;}
公共虚拟整数密码已更改{set;get;}
//担保人详情
公共虚拟字符串Guarantor1FullName{set;get;}
公共虚拟字符串guarantor1地址{set;get;}
公共虚拟字符串Guarantor1PhoneNumber{set;get;}
公共虚拟字符串guarantor1电子邮件{set;get;}
公共虚拟字符串Guarantor2FullName{set;get;}
公共虚拟字符串Guarantor2Address{set;get;}
公共虚拟字符串Guarantor2PhoneNumber{set;get;}
公共虚拟字符串Guarantor2Email{set;get;}
公共异步任务GenerateUserIdentityAsync(AppUserManager管理器,字符串身份验证类型)
{
var userIdentity=wait manager.CreateIdentityAsync(这是authenticationType);
//在此处添加自定义用户声明
返回用户身份;
}
}
这是调用updateAsync的方法

public async Task<IdentityResult> UpdateUser(AppUser user)
    {
        AppUser usr;
        usr = await UserManager().FindByIdAsync(user.Id);
        if (usr == null)
        {
            return new IdentityResult("Member does not exist!");
        }

        usr.EmployeeNumber = user.EmployeeNumber;
        usr.FirstName = user.FirstName;
        usr.LastName = user.LastName;
        usr.MiddleName = user.MiddleName;
        usr.PhoneNumber = user.PhoneNumber;
        usr.Email = user.Email;
        usr.UserName = user.Email;
        usr.ProfileImage = user.ProfileImage;
        usr.Jobdescription = user.Jobdescription;

        if (user.DateJoined != DateTime.MinValue)  
        {
            usr.DateJoined = user.DateJoined;
        }

        if (user.DateOfBirth != DateTime.MinValue)
        {
            usr.DateOfBirth = user.DateOfBirth;
        }

        if (user.Sex != null)
        {
            usr.Sex = user.Sex;
        }

        usr.Guarantor1Address = user.Guarantor1Address;
        usr.Guarantor1Email = user.Guarantor1Email;
        usr.Guarantor1FullName = user.Guarantor1FullName;
        usr.Guarantor1PhoneNumber = user.Guarantor2PhoneNumber;
        usr.Guarantor2Address = user.Guarantor2Address;
        usr.Guarantor2Email = user.Guarantor2Email;
        usr.Guarantor2FullName = user.Guarantor2FullName;
        usr.Guarantor2PhoneNumber = user.Guarantor2PhoneNumber;


        try
        {
            return await UserManager().UpdateAsync(usr);

        }catch(Exception ex)
        {
            throw ex;
        }


    }
public async Task UpdateUser(AppUser)
{
应用程序用户usr;
usr=await UserManager().FindByIdAsync(user.Id);
如果(usr==null)
{
返回新的IdentityResult(“成员不存在!”);
}
usr.EmployeeNumber=user.EmployeeNumber;
usr.FirstName=user.FirstName;
usr.LastName=user.LastName;
usr.MiddleName=user.MiddleName;
usr.PhoneNumber=user.PhoneNumber;
usr.Email=user.Email;
usr.UserName=user.Email;
usr.ProfileImage=user.ProfileImage;
usr.Jobdescription=用户.Jobdescription;
if(user.DateJoined!=DateTime.MinValue)
{
usr.DateJoined=user.DateJoined;
}
if(user.DateOfBirth!=DateTime.MinValue)
{
usr.DateOfBirth=user.DateOfBirth;
}
if(user.Sex!=null)
{
usr.Sex=user.Sex;
}
usr.guarantor1地址=user.guarantor1地址;
usr.guarantor1电子邮件=user.guarantor1电子邮件;
usr.Guarantor1FullName=user.Guarantor1FullName;
usr.guarantor1电话号码=user.guarantor2电话号码;
usr.guarantor2地址=user.guarantor2地址;
usr.Guarantor2Email=user.Guarantor2Email;
usr.Guarantor2FullName=user.Guarantor2FullName;
usr.Guarantor2PhoneNumber=user.Guarantor2PhoneNumber;
尝试
{
返回wait UserManager().UpdateAsync(usr);
}捕获(例外情况除外)
{
掷骰子;
}
}
这是无内部异常而失败的行:

返回wait UserManager().UpdateAsync(usr)

这是用户管理器

    public AppUserManager UserManager()
    {
       return HttpContext.Current.GetOwinContext().GetUserManager<AppUserManager>();

    }
公共AppUserManager用户管理器() { 返回HttpContext.Current.GetOwinContext().GetUserManager(); } 这是appUserManager:

public class AppUserManager : UserManager<AppUser, int>
{
    public AppUserManager(IUserStore<AppUser, int> store)
        : base(store)
    {

    }

    public static AppUserManager Create(IdentityFactoryOptions<AppUserManager> options, IOwinContext context)
    {

        AppIdentityDbContext db = context.Get<AppIdentityDbContext>();
        AppUserManager manager = new AppUserManager(new AppUserStore(db));


        // add password validations
        manager.PasswordValidator = new CustomPasswordValidator()
        {
            RequiredLength = 8,
            RequireNonLetterOrDigit = true,
            RequireUppercase = true,
            RequireDigit = true,
            RequireLowercase=true

        };


        manager.UserValidator = new UserValidator<AppUser, int>(manager)
        {
            RequireUniqueEmail = true,

        };

        var provider = new DpapiDataProtectionProvider("http://coopone.local");
        manager.UserTokenProvider =
            new DataProtectorTokenProvider<AppUser, int>(provider.Create("Email Reset"));
        ;

        return manager;
    }
}
公共类AppUserManager:UserManager
{
公共AppUserManager(IUserStore存储)
:基地(商店)
{
}
公共静态AppUserManager创建(IdentityFactoryOptions选项,IOwinContext上下文)
{
AppIdentityDbContext db=context.Get();
AppUserManager=new AppUserManager(new AppUserStore(db));
//添加密码验证
manager.PasswordValidator=新的CustomPasswordValidator()
{
所需长度=8,
RequiredOnletterDigit=真,
RequireUppercase=true,
RequireDigit=true,
RequireLowercase=true
};
manager.UserValidator=新的UserValidator(管理器)
{
RequireUniqueEmail=true,
};
var provider=新的DpapiDataProtectionProvider(“http://coopone.local");
manager.UserTokenProvider=
新的DataProtectorTokenProvider(provider.Create(“电子邮件重置”);
;
退货经理;
}
}

正如您所说,您已部署到IIS,可能您的运行时环境有问题,请查看此信息,谢谢,@Tewr。这个链接很有帮助。HttpRuntime没有指向任何targetFramework,因此
async
await
具有意外行为。在升级到Visual studio 2017后,此功能丢失。我将
更新为
,现在可以使用了。