Reputation: 6046
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.
Upvotes: 1
Views: 2555
Reputation: 9854
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.
Upvotes: 3