0

我在使用 [Authorize(Roles = "admin")] 属性时遇到问题。

[Authorize(Roles = "admin")]
    public ActionResult GetAllLocations()
    {

我收到以下错误

在调用“WebSecurity”类的任何其他方法之前,您必须调用“WebSecurity.InitializeDatabaseConnection”方法。此调用应放置在站点根目录中的 _AppStart.cshtml 文件中。

我首先使用我自己的数据库使用 EF 5 代码构建了一个 MVC 4 应用程序。

一点背景:

  • 我创建了一个从 MembershipProvider 继承的自定义会员提供程序

  • 我在这个网站上看过很多关于这个问题的问题,但没有找到答案。

  • 在一些答案中,我看到了如何禁用会员提供程序

像这样:

    <add key="enableSimpleMembership" value="false"/>
    <add key="autoFormsAuthentication" value="false"/>

这就是我实现自定义会员提供程序的方式

 <membership defaultProvider="ATWMembershipProvider">
  <providers>
    <clear/>
    <add name="ATMMembershipProvider" type="AroundTheWorldWeb.Infrastructure.AuthenticationProvider.ATMMembershipProvider"
         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="false"
         equiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5"
         minRequiredPasswordLength="6"
         minRequiredNonalphanumericCharacters="0"
         passwordAttemptWindow="10" applicationName="myApplication" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
  <providers>
    <remove name="AspNetSqlRoleProvider" />
    <add name="AspNetSqlRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <!-- note: WebMatrix registers SimpleRoleProvider with name
     'AspNetSqlRoleProvider'. I don't know why but i kept it. -->
  </providers>
</roleManager>
4

1 回答 1

0

我通过从模板创建 MVC 4 解决了这个问题。我认为选择空模板时没有加载一些 DLL。所以我从模板创建它并覆盖所有帐户的方法并且还实现了自定义成员和角色提供程序

于 2013-07-29T18:11:21.797 回答