【问题标题】:"The Role Manager feature has not been enabled" - Accessing SimpleMembership from external web service“角色管理器功能尚未启用” - 从外部 Web 服务访问 SimpleMembership
【发布时间】:2013-08-21 13:04:26
【问题描述】:

希望您能帮助解决我在 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>

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

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

【问题讨论】:

  • 是什么让你认为初始化导致了这个错误?通常,当初始化未发生时,您会看到有关初始化的特定错误。 PortalContext 的连接字符串是什么样的?它与您的 Web 应用程序中的内容匹配吗?我从您的 cmets 那里得到的印象是您的 Web 服务是一个独立于 Web 应用程序的应用程序。为什么不在您的 Web 应用程序中添加一个 Web API 来提供此服务。?
  • 嗨,凯文,感谢您的回复。肯定是对 InitializeDatabaseConnection() 的调用失败了 - 无论这种方法需要什么,它都不允许我初始化 WebSecurity。虽然所有的设置对我来说都很好,所以我为什么这么困惑!
  • 我的连接字符串是 MVC4 Web 应用程序的直接副本,因此名称与 PortalContext 等匹配。这是一个普通的 SQL 连接,虽然我现在手头没有它来发布。是的,您说得对,Web 服务是独立于 MVC4 Web 应用程序的应用程序,但它们都引用了另一个包含我的数据库上下文的项目。我们选择托管单独的 Web 服务的原因是因为我们还创建了一个移动应用程序,该应用程序将与 BizTalk 通信,然后 BizTalk 将反过来与 Web 服务通信。
  • 看看这个 QA [stackoverflow.com/questions/12254701/… 看看它是否对您的情况有帮助。
  • 嗨凯文,谢谢你,但我已经审查了这个 QA 上的所有解决方案,但无济于事。

标签: simplemembership


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 2019-04-21
    • 2013-08-25
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多