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

Posted

技术标签:

【中文标题】自定义成员资格提供程序无法加载文件或程序集【英文标题】:Custom membership provider could not load file or assembly 【发布时间】:2013-10-11 18:08:25 【问题描述】:

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

无法加载文件或程序集“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 时发生错误。

【问题讨论】:

员工会员提供者在哪里?哈哈 与论坛网站不同,我们不使用“谢谢”、“任何帮助表示赞赏”或Stack Overflow 上的签名。请参阅“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?. 【参考方案1】:

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

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

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

<RootNamespace>CompanyName</RootNamespace>

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

您也可以尝试清理,重新构建然后尝试。

【讨论】:

以上是关于自定义成员资格提供程序无法加载文件或程序集的主要内容,如果未能解决你的问题,请参考以下文章

无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配

Windows 通用应用程序:无法加载文件或程序集 - 找到的程序集的清单定义与程序集引用不匹配

无法加载文件或程序集或其依赖项之一

ASP.NET 与用于 .NET 的 Delphi 2007。无法加载文件或程序集...定位的程序集的清单定义与程序集引用不匹配

无法加载文件或程序集“System.Runtime.CompilerServices.Unsafe”

无法加载文件或程序集,但已加载