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

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). Je suis à essayer de comprendre pourquoi cela a fait une différence, affichera lorsque la figure.

OriginalL'auteur SBirthare | 2013-08-05