2012-06-14 8 views
5

Sto tentando di compilare i dati al mio NCCMembershipUser con il seguente codice:Casting Errore: inserimento dati in personalizzato MembershipUser

string name = User.Identity.Name; 

NCCMembershipUser currentUser = (NCCMembershipUser)NCCMembershipProvider.GetUser(name, true); 

currentUser.Salutation = GenderSelect.SelectedValue; 
currentUser.FirstName = TextBoxFirstName.Text; 
currentUser.LastName = TextBoxLastName.Text; 
currentUser.Position = TextBoxPosition.Text; 
... 

try 
{ 
    NCCMembershipProvider u = (NCCMembershipProvider)Membership.Provider; 
    u.UpdateUser(currentUser); 
} 

sto ottenendo un errore "È necessario un riferimento a un oggetto per la non static campo, metodo o proprietà 'System.Web.Security.MembershipProvider.GetUser (string, bool)'"

Se io invece uso Membership.GetUser() (senza la stringa name) per accedere l'utente corrente, che mi dà un errore di trasmissione e GetUser() appare non può essere overridd it.

Modifica: "[A] NCC.App_Code.NCCMembershipProvider non può essere lanciato a [B] NCC.App_Code.NCCMembershipProvider"

L'errore di colata che ottenga è

risposta

1

The casting error I get is "[A]NCC.App_Code.NCCMembershipProvider cannot be cast to [B]NCC.App_Code.NCCMembershipProvider."

Per questo errore, verificare che non si dispone di quella classe nella cartella App_Code, in caso affermativo, spostarlo in un altro posiziona come una nuova cartella denominata Membership

Questo si occuperà del problema del casting in quanto l'app sta compilando 2 DLL diverse in 2 diversi posti nelle cartelle temporanee di asp.net.

+1

Ho creato una cartella denominata NCCMembership, quindi non ci sarebbero stati problemi con lo spazio dei nomi Membership in System.Web.Security. Ma quello ha funzionato. Grazie. – RyanJMcGowan

3

L'errore indica che il metodo GetUser non è static, quindi non può essere richiamato senza un'istanza della classe NCCMembershipProvider.

Dovete afferrare il vostro fornitore di precedenza nel metodo:

string name = User.Identity.Name; 
NCCMembershipProvider u = (NCCMembershipProvider)Membership.Provider; 

NCCMembershipUser currentUser = (NCCMembershipUser)u.GetUser(name, true); 

currentUser.Salutation = GenderSelect.SelectedValue; 
currentUser.FirstName = TextBoxFirstName.Text; 
currentUser.LastName = TextBoxLastName.Text; 
currentUser.Position = TextBoxPosition.Text; 
// ... 

try 
{ 
    u.UpdateUser(currentUser); 
} 
+0

Questo mi riporta all'errore di trasmissione che ho menzionato nella domanda. "[A] NCC.App_Code.NCCMembershipProvider non può essere trasmesso a [B] NCC.App_Code.NCCMembershipProvider" – RyanJMcGowan

+0

Penso che dovrò ignorare il provider e utilizzare semplicemente un controllo dell'origine dati. Nessuno sembra sapere come risolvere questo. Dovrebbe essere così semplice. – RyanJMcGowan