4

Ceci est un problème pour moi avec .Net 3.5 SP1 fonctionnant sur IIS7.5 64 bits (j'ai essayé de forcer 32 bits mais j'ai obtenu le même résultat).Comment puis-je déboguer une erreur «fournisseur d'appartenance par défaut introuvable» avec WCF et un fournisseur d'appartenance ASP.NET personnalisé?

J'ai un service WCF avec lequel je veux utiliser des services d'authentification. Lorsque je n'ai aucun comportement, le service WCF peint (réponses) sans aucune erreur. D'autres services fonctionnent également avec d'autres comportements

Dès que j'ajoute userNameAuthentication au comportement spécifiant un MembershipProvider personnalisé pour l'authentification à un service ...

<serviceCredentials> 
    <!-- Configure user name authentication to use the Membership Provider --> 
    <userNameAuthentication userNamePasswordValidationMode ="MembershipProvider" 
          membershipProviderName ="MembershipService"/> 
    </serviceCredentials> 

Le service explose et retourne l'erreur suivante:

Parser Error Message: Default Membership Provider could not be found. 
Source Error: 
Line 49:  </authentication> 
Line 50:  
Line 51:  <membership defaultProvider="MembershipService" userIsOnlineTimeWindow="15"> 
Line 52:  <providers> 
Line 53:   <clear/> 

Event Log a cette erreur:

WebHost failed to process a request. 
Sender Information: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/59884855 
Exception: System.ServiceModel.ServiceActivationException: The service '/V4Service.svc' cannot be activated due to an exception during compilation. The exception message is: Default Membership Provider could not be found. (C:\Code\SmartTrade Projects\SmartTrade.API\Web\SmartTrade.API\web.config line 50). ---> System.Configuration.ConfigurationErrorsException: Default Membership Provider could not be found. (C:\Code\SmartTrade Projects\SmartTrade.API\Web\SmartTrade.API\web.config line 50) 
at System.Web.Security.Membership.Initialize() 
at System.Web.Security.Membership.get_Providers() 
at System.ServiceModel.Configuration.UserNameServiceElement.ApplyConfiguration(UserNamePasswordServiceCredential userName) 
at System.ServiceModel.Configuration.ServiceCredentialsElement.ApplyConfiguration(ServiceCredentials behavior) 
at System.ServiceModel.Configuration.ServiceCredentialsElement.CreateBehavior() 
at System.ServiceModel.Description.ConfigLoader.LoadBehaviors[T](ServiceModelExtensionCollectionElement`1 behaviorElement, KeyedByTypeCollection`1 behaviors, Boolean commonBehaviors) 
at System.ServiceModel.Description.ConfigLoader.LoadServiceDescription(ServiceHostBase host, ServiceDescription description, ServiceElement serviceElement, Action`1 addBaseAddress) 
at System.ServiceModel.ServiceHostBase.ApplyConfiguration() 
at System.ServiceModel.ServiceHostBase.InitializeDescription(UriSchemeKeyedCollection baseAddresses) 
at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses) 
at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type serviceType, Uri[] baseAddresses) 
at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) 
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath) 
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(String normalizedVirtualPath) 
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) 

Je suis assez sûr que ce n'est pas un problème avec la configuration du fournisseur ou du fournisseur car j'ai ce fournisseur personnalisé qui travaille avec un site ASP MVC.

Des pensées?

Répondre

2

J'ai démarré une nouvelle implémentation de Custom Provider à partir de zéro en m'assurant que tous les remplacements étaient correctement renvoyés. Mon original que je pensais fonctionnait (c'était il y a quelques mois) et il s'avère que cela ne fonctionnait plus.

Il s'avère que si le nom du fournisseur est correct et que la configuration de Type correct ne quitte que votre implémentation de Custom Provider.

Donc, si vous avez ce problème et que vous êtes sûr que votre configuration est correcte, vérifiez votre implémentation avec un simple site Web ASP.net ou ASP.net MVC.

+0

Qu'est-ce qui ne fonctionnait pas pour votre fournisseur personnalisé? J'ai ce problème. Le nom du type et de l'assembly sont triplement vérifiés dans le fichier .config, mais j'obtiens cette erreur. Je pense que j'ai besoin de vérifier le journal Fusion, que l'assemblage ne parvient pas à charger en raison d'un problème de chargement de l'environnement, comme une dépendance indisponible. –

+0

La classe MembershipProvider personnalisée a échoué lors d'un appel au constructeur, mais l'erreur reçue était "Le fournisseur d'appartenance par défaut n'a pas pu être trouvé" – JTew

1

J'ai reçu cette erreur et j'ai finalement découvert que des caractères UTF8 ou Unicode masqués avaient trouvé leur place dans mon fichier web.config. J'ai dû supprimer des sections pour comprendre que la section des chaînes d'application était corrompue. Une fois que je l'ai remplacé à partir d'une ancienne version, cela a fonctionné à nouveau. Certaines des cordes avaient un espace blanc supplémentaire qui était suspect, je ne suis pas sûr si cela aurait pu être de couper et coller ou quoi. Vous pouvez essayer de regarder votre fichier web.config avec un éditeur hexadécimal aussi.

1

J'ai eu ce même problème et j'ai passé près d'une semaine à le découvrir. Mon problème était que je devais définir le remplacement de propriété de propriété à la même valeur qui était dans le nom du fournisseur web.config. Je déteste quand les solutions les plus simples sont si difficiles à trouver!

Questions connexes