2009-01-29 5 views
1

Nous avons un système d'exploitation en cours d'exécution avec une erreur qui se produit de temps en temps. L'erreur est en fonction de la trace de la pile provenant du fournisseur d'appartenance asp.net. Il ne semble pas importer quel utilisateur est actuellement connecté. Autant que je peux dire les tables d'adhésion asp.net dans la base de données sont très bien.Erreur d'appartenance à Asp.net

Exemple d'une ligne de code génère l'erreur:

if (Membership.GetUser() != null) 

Description de l'erreur:

Unable to cast object of type 'System.Int32' to type 'System.String'. 

Stack Trace:

[InvalidCastException: Unable to cast object of type 'System.Int32' to type 'System.String'.] 
System.Data.SqlClient.SqlBuffer.get_String() +141 
System.Data.SqlClient.SqlDataReader.GetString(Int32 i) +96 
System.Web.Security.SqlMembershipProvider.GetNullableString(SqlDataReader reader, Int32 col) +35 
System.Web.Security.SqlMembershipProvider.GetUser(String username, Boolean userIsOnline) +1110 
System.Web.Security.Membership.GetUser(String username, Boolean userIsOnline) +82 
System.Web.Security.Membership.GetUser() +19 

Quelqu'un at-il une idée de ce qui ne va pas?


Mise à jour: Nous n'avons pas trouvé de solution pour cette erreur. Mais finalement, il a disparu. Maintenant, lorsque nous avons migré vers un autre serveur, cette erreur a totalement paralysé notre application. Je suis tout à fait d'idées :(

+0

Il semble se produire bas sur la pile ... –

+0

Yikes - nous avons le même problème en ce moment - aucune idée. – Perhentian

+0

Man, je reçois ça aussi et ça me rend fou. Je me sens comme si j'avais besoin d'écrire mon propre fournisseur d'adhésion. –

Répondre

0

Mettez un bloc try/catch autour de l'appel Membership.GetUser() et connectez-vous le nom d'utilisateur. Vous pouvez obtenir le nom d'utilisateur en appelant Membership.GetCurrentUserName().

Une fois vous avez un nom d'utilisateur pour lequel cela pose des problèmes, regardez la table des membres dans SQL et jetez un coup d'oeil au champ Commentaires.Je suppose qu'il se passe quelque chose de drôle dans le champ Commentaires - peut-être y at-il des caractères unicodes étranges ou peut-être il y a trop de données dans ce champ, etc.

Également, essayez d'appeler dbo.aspnet_Membership_GetUserByName sur la base de données d'adhésion pour l'utilisateur avec lequel il a eu des problèmes et voir quel résultat yo tu comprends.