0

希望您能帮助我解决我的 SimpleMembershipProvider 面临的一个特殊问题。

我有一个 MVC4 应用程序,它使用 SimpleMembership 功能来存储用户和角色信息。这一切都可以在前端 MVC4 应用程序中完美运行。

我们还有一个 Web 服务,它将调用相同的 SimpleMembershipProvider 以使用标准 ValidateUser() 方法从移动应用程序验证用户凭据。

但是,在使用 ValidateUser() 方法之前,我需要使用 WebSecurity.InitializeDatabaseConnection 方法初始化我的 WebSecurity 对象。这导致以下错误:

“角色管理器功能尚未启用。”

我在服务启动中初始化 WebSecurity 对象,使用从我的门户中提取的相同代码:

    if (!WebSecurity.Initialized)
    {
    WebSecurity.InitializeDatabaseConnection("PortalContext", "UserProfile", "UserId", "UserName", autoCreateTables: true);
    }

我检查了我的 web 服务的 web.config 是否包含 appSettings 键

    <add key="enableSimpleMembership" value="true" /> 

我还在 web.config 的 system.web 部分中包含了角色管理器和成员资格详细信息。

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

我现在完全不知所措,整个上午都在谷歌上搜索可能的解决方案。

谁能想到可能发生这种情况的原因?

4

1 回答 1

0

如果您在同一个解决方案中有多个项目并且正在使用迁移,请在运行数据库更新之前将包含迁移的启动项目设为启动项目(在解决方案资源管理器中,右键单击项目名称>“设置为启动项目”)。

于 2014-09-10T05:12:49.637 回答