Как можно отладить ошибку «Не удалось найти поставщика членства по умолчанию» с WCF и пользовательским поставщиком членства ASP.NET? - PullRequest
4 голосов
/ 24 февраля 2010

Это проблема для меня, когда .Net 3.5 SP1 работает на IIS7.5 64 бит (я пытался форсировать 32 бит, но получил тот же результат).

У меня есть служба WCF, с которой я хочу использовать службы аутентификации. Когда у меня нет поведения, служба WCF рисует (отвечает) без ошибок. Другие службы также работают с другим поведением

Как только я добавлю userNameAuthentication к поведению, указав собственный MembershipProvider для аутентификации в службе ...

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

Служба взрывается и возвращает следующую ошибку:

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

Журнал событий имеет эту ошибку:

 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)

Я почти уверен, что это не проблема с провайдером или конфигурацией провайдера, так как у меня есть этот провайдер, работающий с сайтом ASP MVC.

Есть мысли?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2010

Я начал новую реализацию Custom Provider с нуля, чтобы все переопределения корректно возвращались. Мой оригинальный, который я думал, работал (это было пару месяцев назад), и оказалось, что он больше не работал.

Оказывается, если у вас правильно указано имя поставщика и правильный тип в конфигурации, которая оставляет только реализацию вашего настраиваемого поставщика.

Так что, если у вас возникла эта проблема, и вы уверены, что ваша конфигурация верна, проверьте свою реализацию на простом веб-сайте ASP.net или ASP.net MVC.

1 голос
/ 29 октября 2013

У меня была такая же проблема, и я потратил почти неделю на то, чтобы ее решить. Моя проблема заключалась в том, что мне пришлось установить для переопределения свойства Name то же значение, которое было в имени поставщика web.config. Я ненавижу, когда так сложно найти простейшие решения!

1 голос
/ 29 мая 2012

Я получил эту ошибку и в итоге обнаружил, что скрытые символы UTF8 или Unicode попали в мой файл web.config. Мне пришлось удалить разделы, чтобы выяснить, что раздел строк приложения был поврежден.

Как только я заменил его из старой версии, он снова заработал. В некоторых строках было дополнительное пустое пространство, что было подозрительно, я не уверен, что это могло быть из вырезанного и вставленного или что-то еще. Вы также можете просмотреть свой файл web.config с помощью шестнадцатеричного редактора.

...