4

这对于我在IIS7.5 64位上运行.Net 3.5 SP1的问题(我尝试强制32位,但得到了相同的结果)。如何使用WCF和自定义ASP.NET成员资格提供程序调试“无法找到默认成员资格提供程序”错误?

我有一个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网站。

有什么想法?

回答

2

我从头开始一个新的自定义提供程序实现,确保所有覆盖都正确返回。我原来以为工作正常(那是几个月前),结果证明它不再有效。

事实证明,如果您的提供者名称正确,并且配置中的类型正确,只会保留您的自定义提供者实现。

所以,如果你有这个问题,你确定你的配置是正确的,用一个简单的ASP.net或ASP.net MVC网站验证你的实现。

+0

什么不是你的自定义提供商的工作?我有这个问题。类型和程序集名称在.config中被三重检查为正确,但我得到这个错误。我想我需要检查Fusion日志,由于某些环境问题加载(例如不可用的依赖关系),程序集未能加载。 – 2011-09-21 21:34:47

+0

自定义MembershipProvider类对构造函数的调用失败,但收到的错误是“找不到默认的成员资格提供程序” – JTew 2011-09-21 23:04:32

1

我得到这个错误,最终发现隐藏的UTF8或Unicode字符已经找到他们的方式进入我的web.config文件。我必须删除部分才能确定应用程序字符串部分已损坏。

一旦我从旧版本中替换它,它再次工作。有些字符串在其中有额外的空白空间,我怀疑它是否可能来自剪切和粘贴或者什么。您可以尝试使用十六进制编辑器查看您的web.config文件。

1

我有这个相同的问题,花了差不多一个星期搞清楚了。我的问题是我必须将Name属性重写设置为web.config的提供程序名称中的相同值。当最简单的解决方案很难找到时,我讨厌它!

相关问题