Message D'Erreur “L'Adhésion.” Fournisseur de biens doit être une instance de “ExtendedMembershipProvider”
Je suis en utilisant SimpleMembership pour un ASP.NET MVC4 en fonction de l'application. J'ai de l'installation du mécanisme d'authentification en suivant des blogs sur internet. Juste pour un fond voici les faits saillants:
• J'ai une classe “InitializeSimpleMembershipAttribute” que d'initialiser les membres. S'assurer que ceci est appelé avant le premier appel à aucune méthode de WebSecurity classe.
• J'ai un SeedData classe qui crée par défaut des utilisateurs et des rôles en utilisant WebSecurity avec succès (DB obtient de données par défaut).
• L'application dans son état actuel permet à l'utilisateur de se connecter et utiliser les fonctionnalités qu'il a accès. Donc je pense que nous pouvons dire SimpleMembership est configuré correctement et de travail.
• Maintenant, je suis en ajoutant “ResetPassword” fonctionnalité. J'ai suivi quelques blogs par exemple
http://www.itorian.com/2013/03/PasswordResetting.html#comment-form
et
http://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.resetpassword(v=vs. 111).aspx
J'ai mis en œuvre des trucs de base (de vue et de la logique), cependant quand je fais un appel à
WebSecurity.GeneratePasswordResetToken(nom d'utilisateur);
- Je obtenir de l'exception suivante.
Pour appeler cette méthode, le "Membership."Fournisseur de biens doit être une instance de "ExtendedMembershipProvider".
Description: Une exception non gérée s'est produite pendant l'exécution de la demande web actuelle. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et où elle a son origine dans le code.
Détails De L'Exception: System.InvalidOperationException: Pour appeler cette méthode, le "Membership."Fournisseur de biens doit être une instance de "ExtendedMembershipProvider".
Je vois dans ILSpy que cela vient de WebSecurity.VerifyProvider() la méthode. Cependant, je n'arrive pas à comprendre pourquoi?
ExtendedMembershipProvider extendedMembershipProvider = Membership.Provider as ExtendedMembershipProvider;
- Dessus de la ligne de WebSecurity classe doit retourner la valeur null à cause de cette exception, il ne faut pas que la configuration existent dans le web.le fichier de configuration et je ne suis nulle part à l'aide de n'importe quel autre fournisseur qui n'est pas étendu à partir de la "ExtendedMembershipProvider".
Permettez-moi de vous montrer mon web.config qui est un peu modifié, en fonction de suggestion de personnes ont fait pour la résolution de ce problème.
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="enableSimpleMembership" value="true" />
</appSettings>
<system.web>
<httpRuntime targetFramework="4.5" />
<compilation debug="true" targetFramework="4.5" />
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
<roleManager enabled="true" defaultProvider="SimpleRoleProvider" lockItem="true">
<providers>
<clear />
<add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
</providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider" lockItem="true">
<providers>
<clear />
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="PublicWebsiteDbContext" />
</providers>
</sessionState>
<profile defaultProvider="DefaultProfileProvider">
<providers>
<add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="PublicWebsiteDbContext" applicationName="/" />
</providers>
</profile>
</system.web>
Essayez 1:
Ensemble lockItem="true" sur les attributs ci-dessus pour s'assurer de configuration globale n'est pas primordial ma configuration.
Essayer 2:
Insistait sur la nécessité de l'adhésion de configuration est présent dans le web“.config”, comme suggéré dans la réponse à la question ci-dessous:
Pour appeler cette méthode, le "Membership."Fournisseur de biens doit être une instance de "ExtendedMembershipProvider"
Essayez 3:
Ajouté <add key="enableSimpleMembership" value="true" />
dans le web.fichier de configuration.
Essayer 4:
Ont lu au moins le top 10 lien de l'aide sur google et 5 réponse sur de SORTE que semble pertinent sur ce sujet par exemple
Pour appeler cette méthode, le "Membership."Fournisseur de biens doit être une instance de "ExtendedMembershipProvider"
Effectivement ne comprends pas comment il a obtenu l'erreur est résolue avec motif mentionné dans la réponse. “ActionExecutingContext” n'est pas dans le Système“.Web.Http”.
Pouvez-vous l'obligeance de nous suggérer d'autres choses que je peux essayer de se débarrasser de cette exception s'il vous plaît?
Je sais que c'est faut travailler pour moi aussi juste ennuyé avec le temps >2 heures j'ai eu à déchets pour régler ce type de problème (au point de ferraille en utilisant SimpleMembership et utiliser mon propre mécanisme d'authentification).
Mise à JOUR: Le problème est résolu. Le changement de résoudre cette exception est, j'ai été le référencement de WebMatrix.WebData de l'assemblée de la version 1.0 dans ma couche de gestion de projet, je l'ai remplacé avec de l'assemblée de la version 2.0. J'ai la version 2.0 de l'assemblée utilisé dans d'autres projets assemblées (DAL).
J'ai comparé les deux version de WebMatrix.WebData assemblée n'a toutefois pas pu trouvé de différence dans le code qui est en cause. Si vous ne savez pas exactement pourquoi il n'était pas à jeter le fournisseur "ExtendedMembershipProvider"?
Pourrait-il être lié à depuis un autre projet, en particulier de projet web est le chargement de la version 2.0 et la couche métier qui est de faire WebSecurity.GeneratePasswordResetToken
la recherche d'1.0 assemblée, il pourrait être la cause du problème? Dans ce cas, devrais-je pas recevoir un avertissement ou une autre aide de l'exception?
Merci d'avance > Shailendra
OriginalL'auteur SBirthare | 2013-08-05
Vous devez vous connecter pour publier un commentaire.
Le changement de résoudre cette exception est, j'ai été le référencement de WebMatrix.WebData de l'assemblée de la version 1.0 dans ma couche de gestion de projet, je l'ai remplacé avec de l'assemblée de la version 2.0.
Quand j'ai comparé les deux version de WebMatrix.WebData assemblées, je ne pouvais pas trouvé de différence dans le code qui est en cause.
Cependant, le fait que j'ai la version 2.0 de l'assemblée déjà utilisé dans un autre projet de l'assemblée (DAL).
Ainsi, alors que je ne suis pas sûr à 100% que ma théorie est que, au moment de l'exécution, tout en vérifiant le fournisseur, il a été l'échec du chargement d'un assemblage correct en raison d'un conflit (une version est déjà chargé qui est référencé dans DAL projet et lors de la deuxième méthode de projet est appelée, elle fait référence à une version différente de la même assemblée) et elle présente le générique de message d'exception.
Je vais avoir le même problème, mais je suis déjà l'utilisation de WebMatrix.WebData la version 2. Des idées?
Eh bien, il ya beaucoup de choses à vérifier ou à essayer. Si vous avez déjà essayé ce que j'ai mentionné dans mon post ci-dessus, je vous suggère de poster une nouvelle question avec les détails de votre mise en œuvre et l'erreur exacte.
Merci. J'ai essayé toutes les choses mentionnées dans ce post, et quelques autres, ainsi que les fruits mûrs de bugs. J'ai besoin de quelque chose de travail, donc je vais revenir à l'out-of-the-box adhésion des choses pour le moment, puis tourner autour de cela quand j'ai une minute et je vais documenter toutes mes démarches et reposter ici si j'ai encore de la difficulté.
OriginalL'auteur SBirthare
J'ai dû enlever toutes les WebMatrix.De données et de WebMatrix.WebData références dans TOUS mes projets, ajouté à leur retour dans la Copie Locale = vrai, alors il a travaillé. Assurez-vous d'avoir le bon numéro de version! v2.quelque chose.
OriginalL'auteur Rob Koch