net claim asp c# model-view-controller claims-based-identity

asp - claim c#



La instrucción incrustada no puede ser una declaración o una declaración etiquetada (2)

Intento crear un usuario que use la identidad de reclamo asp.net Obtengo este error al crear un usuario de identidad de reclamos.

ApplicationUser user = new ApplicationUser { EmailConfirmed = true, UserName = model.myUser.Email, Email = model.myUser.Email , PhoneNumber = model.myUser.PhoneNumber, PhoneNumberConfirmed = true, UserImagePath = model.myUser.UserImagePath, FirstName= model.myUser.FirstName, LastName = model.myUser.LastName, DateOfBirth = model.myUser.DateOfBirth, Culture = model.myUser.Culture, Role = model.myUser.Role };

pero cuando el código era

var user= new ApplicationUser { UserName = model.myUser.Email, Email = model.myUser.Email , };

funcionó perfectamente, así que quiero saber qué está mal


Acabo de tener este error, y la solución fue agregar un corchete al inmediatamente anterior a mi código, y luego eliminarlo nuevamente. Visual Studio facepalm OTD.


Usted tiene una declaración ( si o mientras , por ejemplo), justo antes del código que publicó, sin llaves.

Por ejemplo:

if (somethingIsTrue) { var user= new ApplicationUser { UserName = model.myUser.Email, Email = model.myUser.Email , }; }

es correcto, pero el código a continuación:

if (somethingIsTrue) var user = new ApplicationUser { UserName = model.myUser.Email, Email = model.myUser.Email , };

dará como resultado CS1023: instrucción incrustada no puede ser una declaración o una declaración etiquetada.

ACTUALIZAR

La razón, de acuerdo con @codefrenzy, es que la variable recién declarada saldrá inmediatamente del alcance, a menos que esté encerrada en una declaración de bloque, desde donde se puede acceder desde ella.

La compilación pasará en los siguientes casos sin embargo.

Si solo inicializa una nueva instancia de un tipo, sin declarar una nueva variable:

if (somethingIsTrue) new ApplicationUser { UserName = model.myUser.Email, Email = model.myUser.Email , };

o si asigna un valor a una variable existente:

ApplicationUser user; if (somethingIsTrue) user = new ApplicationUser { UserName = model.myUser.Email, Email = model.myUser.Email , };