0

嗨,我一直在尝试将 SimpleMembershipProvider 集成到我的 asp.net mvc 应用程序中,但我似乎遇到了一些问题。

这就是我的 web.config 中的内容:

 <membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider"/>
  </providers>
</membership>

这是我试图运行以登录用户的代码:

public bool Login(string userName, string password, bool rememberMe)
{
        return WebSecurity.Login(userName, password, rememberMe);
}

在调用所有这些 get 之前,调用以下属性代码 get 并且它工作正常:

 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MembershipInitializerAttribute : ActionFilterAttribute
{

    private const string CONNECTIONSTRING_NAME = "eShopConnectionString";
    private const string DATABASE_TABLE_NAME = "Users";
    private const string DATABASE_TABLE_IDENTIFIER_COLUMN = "UserId";
    private const string DATABASE_TABLE_USER_NAME_COLUMN = "UserName";
    private const bool AUTO_CREATE_TABLES = true;

    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        if (!WebSecurity.Initialized)
        {
            WebSecurity.InitializeDatabaseConnection(CONNECTIONSTRING_NAME, DATABASE_TABLE_NAME, DATABASE_TABLE_IDENTIFIER_COLUMN, DATABASE_TABLE_USER_NAME_COLUMN, AUTO_CREATE_TABLES);
        }
    }
}

输入用户名和密码后执行登录方法。按下登录按钮后,执行调用登录方法的登录操作,女巫抛出以下异常:

{“无法加载类型 'WebMatrix.WebData.SimpleMembershipProvider'。(F:\Programare\Projects IDE\Visual Studio\2012\e-shop\Backend\WebApi\e-shop.WebApi\web.config 第 73 行)”}

在此处输入图像描述

在我做了一些研究之后,许多人建议将 WebMatrix.WebData Copy Local 属性设置为 true。

在我这样做之后,应用程序启动时似乎出现了问题,因为我不再看到可以插入我的凭据的屏幕,我立即得到一个带有以下消息的屏幕:

说明:处理服务此请求所需的配置文件期间发生错误。请查看下面的具体错误详细信息并适当地修改您的配置文件。

解析器错误消息:在应用程序的预启动初始化阶段无法调用此方法。

在此处输入图像描述

我做错了什么,我该如何纠正?

编辑

我也得到了这个 StackTrace:

在此处输入图像描述

4

1 回答 1

2

您的 web.config 条目看起来不正确。add元素中的type属性应在逗号后包含程序集名称。这是 web.config 条目的外观。

<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>

请注意,除了具有程序集名称之外,最好使用clear元素来确保您不会注册多个提供程序,这可能会导致奇怪的行为。

于 2013-09-25T20:00:45.810 回答