Question

I think I might just be missing something small here but I'm not sure where it is. I'm trying to implement a custom membership provider so that I can use the Membership API for an asp.net mvc application. The custom membership provider I am creating is for users stored in the credentials section of the web.config file. The error message I am getting is:

Could not load file or assembly 'CompanyName.App_Code.Membership' or one of its dependencies. The system cannot find the file specified.

My code looks like this:

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> 

Directory Structure

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

The error happens when I call Membership.ValidateUser in my login controller.

Was it helpful?

Solution

It looks like the type might be incorrectly configured. In my project I have something like this.

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

this is assuming you also have CompanyName as the rootnamespace in your .csproj file.

<RootNamespace>CompanyName</RootNamespace>

On a side note, CompanyName.Membership.WebConfigMemberShipProvider itself looks good. App_Code in namespace looks little bit odd to me. It is just my preference.

You can also try to clean, build again and then try.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top