2009-10-13 6 views
0

Peu de nos clients obtiennent régulièrement exception fonte invalide, avec des variations -à-dire InvalidCastException/ProviderException, mais les deux générer à partir appel de méthode: System.Web.Security.SqlRoleProvider.GetRolesForUser(String username)ProviderException: InvalidCastException

L'autre variante est:

Exception type: InvalidCastException
Message d'exception: Impossible de convertir l'objet de type System.Int32 en type System.String.

J'ai regardé journal des événements qui montre:

Stack trace: 
    at System.Web.Security.SqlRoleProvider.GetRolesForUser(String username) 
    at System.Web.Security.RolePrincipal.IsInRole(String role) 
    at System.Web.Configuration.AuthorizationRule.IsTheUserInAnyRole(StringCollection roles, IPrincipal principal) 
    at System.Web.Configuration.AuthorizationRule.IsUserAllowed(IPrincipal user, String verb) 
    at System.Web.Configuration.AuthorizationRuleCollection.IsUserAllowed(IPrincipal user, String verb) 
    at System.Web.Security.UrlAuthorizationModule.OnEnter(Object source, EventArgs eventArgs) 
    at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)* 

Quelqu'un at-il rencontré ce problème, et si oui, quelle est la solution?

Merci

JS

Répondre

0

Le message d'erreur vous dit que vous essayez de lancer (lire Compressé) à partir d'un type entier à un type de chaîne et que ce casting n'a pas réussi. Cela s'est produit dans la fonction GetRolesForUser (String). Alors peut-être que vous passez un nombre entier à la place d'une chaîne et qu'il est mal analysé. De toute façon, nous aurons besoin de plus de code pour être sûr. J'espère que ça aide. Essayez de vous assurer que lorsque vous donnez un nombre entier à un élément nécessitant une chaîne de caractères, appelez d'abord la fonction toString(). Par exemple:

GetRolesForUser(someInt32Var.toString()) 
+0

Shhnap merci pour votre réponse, j'aimerais passer le bon paramètre, mais aussi évident à partir de la trace de la pile, ce qui semble se produire en raison de la asp façon .net gère en interne l'adhésion. Il est également intéressant de noter que cette erreur ne se produit pas très souvent, peut-être une fois par jour ou parfois à chaque tentative de connexion. Il est difficile à reproduire de manière cohérente, ce qui rend la réparation encore plus difficile. Pour plus d'informations, cela se produit lorsqu'un appel est fait à cette méthode Membership.GetUser (Login.UserName); –

Questions connexes