Значение не может быть нулевым. Имя параметра: значение, CreateIdentityAsync?

Я создал ViewModel ( UserModel ), которые реализуют IUser (для настройки ASP.NET Identity 2.0)

 public class UserModel : IUser { public int Id { get; set; } public string SecurityStamp { get; set; } [Display(Name = "Name")] public string FirstName { get; set; } [Display(Name = "Last Name")] public string LastName { get; set; } public string FullName { get; set; } [Display(Name = "Username")] public string UserName { get; set; } [DataType(DataType.Password)] [Display(Name = "Password")] public string Password { get; set; } [Display(Name = "E-Mail")] public string Email { get; set; } [Display(Name = "Photo")] public string PhotoPath { get; set; } public List Claims { get; set; } [IgnoreMapping] public List Comments { get; set; } } 

Все хорошо, но метод GenerateUserIdentityAsync .
Следующий код – это мой GenerateUserIdentityAsync в UserModel:

 public async Task GenerateUserIdentityAsync(UserManager manager) { this.SecurityStamp = Guid.NewGuid().ToString(); this.Claims = new List(); ClaimsIdentity userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);//Exception : Value cannot be null. Parameter name: value return userIdentity; } 

Исключение произошло в методе CreateIdentityAsync со следующей трассировкой стека

 ArgumentNullException: Value cannot be null. Parameter name: value] System.Security.Claims.Claim..ctor(String type, String value, String valueType, String issuer, String originalIssuer, ClaimsIdentity subject, String propertyKey, String propertyValue) +10798181 System.Security.Claims.Claim..ctor(String type, String value) +34 Microsoft.AspNet.Identity.d__0.MoveNext() +1458 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24 Smartiz.UI.Models.d__2.MoveNext() in e:\Works\Smartiz\Smartiz.UI\Models\UserModels.cs:215 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24 Smartiz.UI.Controllers.d__58.MoveNext() in e:\Works\Smartiz\Smartiz.UI\Controllers\AccountController.cs:448 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21 Smartiz.UI.Controllers.d__3c.MoveNext() in e:\Works\Smartiz\Smartiz.UI\Controllers\AccountController.cs:315 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21 System.Threading.Tasks.TaskHelpersExtensions.ThrowIfFaulted(Task task) +61 System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +114 System.Web.Mvc.Async.c__DisplayClass37.b__36(IAsyncResult asyncResult) +66 System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49 System.Web.Mvc.Async.AsyncInvocationWithFilters.b__3d() +117 System.Web.Mvc.Async.c__DisplayClass46.b__3f() +323 System.Web.Mvc.Async.c__DisplayClass33.b__32(IAsyncResult asyncResult) +44 System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50 System.Web.Mvc.Async.c__DisplayClass2b.b__1c() +72 System.Web.Mvc.Async.c__DisplayClass21.b__1e(IAsyncResult asyncResult) +185 System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +42 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40 System.Web.Mvc.Controller.b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +34 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44 System.Web.Mvc.Controller.b__15(IAsyncResult asyncResult, Controller controller) +39 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +62 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39 System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +39 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59 System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9651188 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 

Не могли бы вы направить меня, где моя ошибка?

    Я столкнулся с такой же проблемой при обновлении с ASP.NET Identity 1 до ASP.NET Identity 2, и я решил это, поставив случайную строку в поле SecurityStamp.

    Я нашел это решение здесь .

    Надеюсь, это сработает и для вас.

    Как сказал Сэм в своем комментарии к предыдущему ответу, мое решение этой проблемы состояло в том, чтобы убедиться, что пользователь, которого я создавал в методе Seed для миграции EF, имел что-то в SecurityStamp . Как только я это сделал и выполнил update-database -force , я смог войти в систему просто отлично.

     context.Users.AddOrUpdate(u => u.UserName, new ApplicationUser { UserName = "demo", Email = "demo@demo.com", EmailConfirmed = true, PhoneNumberConfirmed = true, PasswordHash = password, PhoneNumber = "111-222-3344", SecurityStamp = Guid.NewGuid().ToString() //THIS IS WHAT I NEEDED }); 

    Если вы создали своего пользователя с помощью других средств, вы сможете исправить его, поместив строку в столбец db пользователей через sql и получив тот же успех.

    Аналогично Кевину, мы также сталкивались с этой проблемой. Оказывается, при посеве базы данных кто-то забыл установить свойство UserName которое произвело эту же ошибку.

    У меня была более общая проблема – некоторые из моих утверждений имели значения Null в таблице AspNetUserClaims после запуска процедуры обновления sql.

    Я решил проблему, установив ClaimValues ​​в пустую строку.