Frage

Dies ist ein Problem für mich, wenn .NET 3.5 SP1 auf IIS7.5 64 -Bit ausgeführt wird (ich habe versucht, 32 Bit zu erzwingen, aber das gleiche Ergebnis erhalten).

Ich habe einen WCF-Dienst, mit dem ich Authentifizierungsdienstleistungen verwenden möchte. Wenn ich kein Verhalten habe, malt der WCF -Service (Antworten) ohne Fehler. Andere Dienste arbeiten auch mit anderen Verhaltensweisen zusammen

Sobald ich dem Verhalten eine Benutzername -Authentifizierung hinzufüge, die einen benutzerdefinierten MitgliedschaftsProvider zur Authentifizierung zu einem Dienst angeben ...

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

Der Service bläst und gibt den folgenden Fehler zurück:

 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/>

Ereignisprotokoll hat diesen Fehler:

 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)

Ich bin mir ziemlich sicher, dass dies kein Problem mit der Anbieter oder Anbieterkonfiguration ist, da ich diesen benutzerdefinierten Anbieter mit einer ASP -MVC -Site arbeite.

Irgendwelche Gedanken?

War es hilfreich?

Lösung

Ich startete von Grund auf eine neue Implementierung für benutzerdefinierte Anbieter, um sicherzustellen, dass alle Überschreibungen korrekt zurückgekehrt waren. Mein ursprüngliches, von dem ich dachte, dass er arbeitete (das war vor ein paar Monaten) und es stellte sich heraus, dass es nicht mehr funktioniert hat.

Es stellt sich heraus, ob Sie den Anbieternamen korrigieren und den Typ korrekt in der Konfiguration korrigieren, wodurch Ihre benutzerdefinierte Anbieterimplementierung nur bleibt.

Wenn Sie dieses Problem haben und sicher sind, dass Ihre Konfiguration korrekt ist, überprüfen Sie Ihre Implementierung mit einer einfachen ASP.NET- oder ASP.NET -MVC -Website.

Andere Tipps

Ich bekam diesen Fehler und stellte schließlich fest, dass versteckte UTF8- oder Unicode -Zeichen in meine Web.config -Datei eingeführt hatten. Ich musste Abschnitte löschen, um herauszufinden, dass der Abschnitt für Anwendungszeichenfolgen beschädigt wurde.

Sobald ich es aus einer älteren Version ersetzt hatte, funktionierte es wieder. Einige der Saiten hatten einen zusätzlichen weißen Raum in ihnen, der verdächtig war. Ich bin mir nicht sicher, ob es aus Schnitt und Paste gewesen sein könnte oder was. Sie können versuchen, auch Ihre Web.config -Datei mit einem Hex -Editor zu betrachten.

Ich hatte das gleiche Problem und verbrachte fast eine Woche damit, es herauszufinden. Mein Problem war, dass ich die Namenseigenschaft auf den gleichen Wert einstellen musste, der im Anbieternamen von Web.Config lag. Ich hasse es, wenn die einfachsten Lösungen so schwer zu finden sind!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top