web.config 中没有 roleManager 标签

Posted

技术标签:

【中文标题】web.config 中没有 roleManager 标签【英文标题】:there is no roleManager tag in web.config 【发布时间】:2014-04-25 15:29:40 【问题描述】:

我正在使用带有 MVC4 的 Asp.Net。

这是我的Seed 方法:

    protected override void Seed(eManager.Web.Infrastructure.DepartmentDB context)
    

        context.Departments.AddOrUpdate(d => d.Name,
            new Department()  Name = "Engineering" ,
            new Department()  Name = "Sales",
            new Department()  Name = "Shipping",
            new Department()  Name = "Human Resources");

        if (!Roles.RoleExists("Admin"))
        
            Roles.CreateRole("Admin");
        

        if (Membership.GetUser("Majid") == null)
        
            Membership.CreateUser("Majid", "221230");
            Roles.AddUserToRole("Majid", "Admin");
        
    

这是我的 web.config:

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=eManager.Web;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\eManager.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusivejavascriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <httpRuntime targetFramework="4.5" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.html" />
        <add namespace="System.Web.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebMatrix.Data" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

但是没有 roleManager 标签,当我运行update-database 命令时,它会说

角色管理器功能尚未启用

谁能告诉我该怎么做??

【问题讨论】:

您需要配置 roleManager(例如在 web.config 文件中创建标签)。阅读asp.net/web-forms/tutorials/security/roles/…。 【参考方案1】:

我想我有解决方案,我知道它已经晚了,但它肯定会帮助新学习者

出现此问题是因为您的解决方案没有正确的 DLL。 所以他们不需要任何代码粘贴,

    只需转到您的 Nuget 包和 搜索MVCInstaller.MVC4包和 安装它。 确保再次检查您的 Web.Config 文件,因为它不会覆盖行,而是会添加新行。所以不要忘记删除旧的。

您已准备好使用您的命令

【讨论】:

【参考方案2】:

如果不存在,为什么不添加它:

更新:

 <roleManager enabled="true">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>

【讨论】:

我做到了,但出现此错误:无法加载文件或程序集 'System.Web.Providers, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。系统找不到指定的文件。 @MSH.你现在可以试试吗? 现在它说:找不到存储过程'dbo.aspnet_CheckSchemaVersion' 我真的很困惑:-(

以上是关于web.config 中没有 roleManager 标签的主要内容,如果未能解决你的问题,请参考以下文章

RoleManager 和 SimpleMembershipProvider 不能与 AuthorizeAttribute 一起使用

在接口中使用 AspNetCore.Identity RoleManager 和 UserManager

Android RoleManager 为自己的包删除角色 RoleManager.ROLE_SMS

尝试将RoleManager注入ASP.NET Core 2.2控制器时出现错误

roleManager与角色管理授权

.net中没有了web.config文件