【问题标题】:How can I debug a 'Default Membership Provider could not be found' error with WCF and a Custom ASP.NET membership provider?如何使用 WCF 和自定义 ASP.NET 成员资格提供程序调试“找不到默认成员资格提供程序”错误?
【发布时间】:2010-02-24 11:52:18
【问题描述】:

在 IIS7.5 64 位上运行的 .Net 3.5 SP1 对我来说是个问题(我尝试强制使用 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 站点一起使用。

有什么想法吗?

【问题讨论】:

    标签: wcf behavior custom-membershipprovider authorizationservices


    【解决方案1】:

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

    事实证明,如果您的 Provider Name 正确且 Type 在配置中正确,则只会留下您的 Custom Provider 实现。

    因此,如果您遇到此问题并且确定配置正确,请使用简单的 ASP.net 或 ASP.net MVC 网站验证您的实现。

    【讨论】:

    • 您的自定义提供程序有什么问题?我有这个问题。类型和程序集名称在 .config 中经过三重检查是否正确,但我收到此错误。我想我需要检查 Fusion 日志,由于某些环境问题加载(例如不可用的依赖项),程序集无法加载。
    • 自定义 MembershipProvider 类在调用构造函数时失败,但收到的错误是“找不到默认成员资格提供程序”
    【解决方案2】:

    我收到此错误,最终发现隐藏的 UTF8 或 Unicode 字符已进入我的 web.config 文件。我不得不删除部分以确定应用程序字符串部分已损坏。

    当我从旧版本替换它后,它又可以工作了。一些字符串中有多余的空格,这是可疑的,我不确定它是否可能来自剪切和粘贴或什么。您也可以尝试使用十六进制编辑器查看您的 web.config 文件。

    【讨论】:

      【解决方案3】:

      我也遇到了同样的问题,花了将近一周的时间才解决了这个问题。我的问题是我必须将 Name 属性覆盖设置为与 web.config 提供程序名称中的值相同的值。当最简单的解决方案很难找到时,我讨厌它!

      【讨论】:

        猜你喜欢
        • 2011-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多