valor source ser puede parámetro nulo nombre nnombre activationcontext c# asp.net-mvc customization asp.net-identity

c# - source - system argumentnullexception el valor no puede ser nulo nombre del parámetro entity



El valor no puede ser nulo. Nombre del parámetro: value, CreateIdentityAsync? (4)

Creé un ViewModel ( UserModel ) que implementa IUser<int> (para personalizar ASP.NET Identity 2.0)

public class UserModel : IUser<int> { 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<Claim> Claims { get; set; } [IgnoreMapping] public List<CommentModel> Comments { get; set; } }

Todo está bien, pero el método GenerateUserIdentityAsync .
El siguiente código es mi GenerateUserIdentityAsync en UserModel:

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

Se ha producido una excepción en el método CreateIdentityAsync con el siguiente seguimiento de pila

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.<CreateAsync>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.<GenerateUserIdentityAsync>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.<SignInAsync>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.<ExternalLoginCallback>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.<BeginInvokeAsynchronousActionMethod>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.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +117 System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323 System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>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.<BeginInvokeAction>b__1c() +72 System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>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.<BeginExecuteCore>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.<BeginExecute>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.<BeginProcessRequest>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

¿Podrías por favor guiarme donde está mi error?


Como Sam mencionó en su comentario para la respuesta anterior, mi solución a este problema fue asegurarme de que el usuario que estaba creando en el método Seed de EF Migration tuviera algo en SecurityStamp . Una vez que hice eso e hice una update-database -force , pude iniciar sesión sin problemas.

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

Si creó a su usuario a través de otros medios, debería poder arreglarlo colocando una cadena en la columna db de los usuarios a través de sql y tendrá el mismo éxito.


De manera similar a Kevin, también estábamos experimentando este problema. Al sembrar la base de datos, alguien olvidó establecer la propiedad UserName que produjo este mismo error.


Me enfrenté al mismo problema al actualizar desde ASP.NET Identity 1 a ASP.NET Identity 2 y lo resolví poniendo una cadena aleatoria en el campo SecurityStamp.

Encontré esta solución here .

Espero que funcione para ti tambien.


Tuve un problema más genérico: algunos de mis reclamos tenían valores nulos en la tabla AspNetUserClaims después de ejecutar una rutina de actualización de sql.

Resolví el problema al establecer ClaimValues ​​en una cadena vacía.