自定义成员资格提供程序无法加载文件或程

时间:2013-10-11 18:08:26

标签: c# asp.net asp.net-mvc asp.net-membership assemblies

我想我可能只是遗漏了一些小东西,但我不知道它在哪里。我正在尝试实现自定义成员资格提供程序,以便我可以将成员资格API用于asp.net mvc应用程序。我创建的自定义成员资格提供程序适用于存储在web.config文件的credentials部分中的用户。我得到的错误信息是:

无法加载文件或程序集“CompanyName.App_Code.Membership”或其依赖项之一。系统找不到指定的文件。

我的代码如下所示:

的web.config

<membership defaultProvider="WebConfigMembershipProvider">
    <providers>
        <clear />
        <add name="WebConfigMembershipProvider"
            applicationName="CompanyName"
            Description="Web Configuration Membership Provider"
            type="CompanyName.App_Code.Membership.WebConfigMembershipProvider, CompanyName.App_Code.Membership" />
    </providers>
</membership> 

目录结构

App_Code
  -Membership
    -WebConfigMembershipProvider.cs : MembershipProvider

WebConfigMembershipProvider.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.Configuration;
    using System.Configuration;
    using System.Web.Helpers;

    namespace CompanyName.App_Code.Membership
    {
        public class WebConfigMembershipProvider : MembershipProvider
        {
            public override bool ValidateUser(string username, string password)
            {
                Configuration webConfiguration = WebConfigurationManager.OpenWebConfiguration(path: "~");
                AuthenticationSection authenticationSection = (AuthenticationSection)webConfiguration.GetSection("system.web/authentication");
                FormsAuthenticationUser storedUser = authenticationSection.Forms.Credentials.Users[username];
                return storedUser != null && Crypto.VerifyHashedPassword(storedUser.Password, password);
            }
/*The rest of MembershipProvider's methods implemented here throwing NotImplementedException*/

当我在登录控制器中调用Membership.ValidateUser时发生错误。

1 个答案:

答案 0 :(得分:3)

看起来type可能配置不正确。在我的项目中,我有类似的东西。

type="CompanyName.App_Code.Membership.WebConfigMembershipProvider, CompanyName" 

这假设您在CompanyName文件中也有.csproj作为根名称空间。

<RootNamespace>CompanyName</RootNamespace>

另一方面,CompanyName.Membership.WebConfigMemberShipProvider本身看起来不错。命名空间中的App_Code对我来说有点奇怪。这只是我的偏好。

您也可以尝试清理,再次构建,然后尝试。