Asp.net 为什么@User.IsInRole不工作?

Asp.net 为什么@User.IsInRole不工作?,asp.net,postgresql,role,devart,isinrole,Asp.net,Postgresql,Role,Devart,Isinrole,我正在使用许可的Devart dotConnect产品连接到ASP.NET MVC5项目中的PostgreSql数据库。我对德瓦特·罗勒曼有意见。 我安装了Dotconnect PostgreSql,下面是本教程 所有这些都可以正常工作,但当我在视图中调用admin角色时,该函数无法正常工作 在DB表(aspnet\u users)中有一个用户(Foo),在表(aspnet\u roles)中有一个管理员角色,在表(aspnet\u usersinroles)中有一个Id连接。 功能: @if(

我正在使用许可的Devart dotConnect产品连接到ASP.NET MVC5项目中的PostgreSql数据库。我对德瓦特·罗勒曼有意见。 我安装了Dotconnect PostgreSql,下面是本教程

所有这些都可以正常工作,但当我在视图中调用admin角色时,该函数无法正常工作

在DB表(aspnet\u users)中有一个用户(Foo),在表(aspnet\u roles)中有一个管理员角色,在表(aspnet\u usersinroles)中有一个Id连接。
功能:

@if(User.IsInRole("admin"))
{
<p>Test Admin page!</p>
}
@if(User.IsInRole(“admin”))
{
测试管理页面

}
快速手表显示:错误

以下是my web.config的一部分:

  <connectionStrings>

    <add name="DefaultConnection" connectionString="host=00.000.000.0;database=DB;user id=***;password=*******; Initial Schema=users" providerName="Devart.Data.PostgreSql"/>
    <add name="DbEntities" connectionString="metadata=res://*/ModelDbFirst.csdl|res://*/ModelDbFirst.ssdl|res://*/ModelDbFirst.msl;provider=Npgsql;provider connection string=&quot;PORT=5520;TIMEOUT=15;POOLING=True;MINPOOLSIZE=1;MAXPOOLSIZE=20;COMMANDTIMEOUT=20;COMPATIBLE=2.2.5.0;DATABASE=;HOST=46.167.233.7;USER ID=***;PASSWORD=****;" providerName="System.Data.EntityClient"/>
  </connectionStrings>
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/account/login" timeout="2880"/>
    </authentication>
    <customErrors mode="Off" defaultRedirect="~/account/error"/>
    <compilation debug="true" targetFramework="4.5"/>
    <httpRuntime targetFramework="4.5"/>
    <membership defaultProvider="AspNetPgSqlMembershipProvider"
      userIsOnlineTimeWindow="15">
      <providers>
        <add name="AspNetPgSqlMembershipProvider" type="Devart.Data.PostgreSql.Web.Providers.PgSqlMembershipProvider,Devart.Data.PostgreSql.Web, Version=7.4.478.0, Culture=neutral, PublicKeyToken=09af7300eec23701" description="dotConnect for PostgreSQL extended membership provider" connectionStringName="DefaultConnection"
        enablePasswordRetrieval="false"
        enablePasswordReset="true"
        requiresQuestionAndAnswer="true"
        requiresUniqueEmail="false"
        passwordFormat="Hashed"
        maxInvalidPasswordAttempts="5"
        applicationName="/"
        passwordAttemptWindow="10" />
      </providers>
    </membership>
    <roleManager defaultProvider="AspNetPgSqlRoleProvider"
      enabled="true"
      cacheRolesInCookie="true"
      cookieName=".ASPROLES"
      cookieTimeout="30"
      cookiePath="/"
      cookieProtection="All" >
      <providers>
      <add name="AspNetPgSqlRoleProvider" type="Devart.Data.PostgreSql.Web.Providers.PgSqlRoleProvider, Devart.Data.PostgreSql.Web, Version=7.4.478.0, Culture=neutral, PublicKeyToken=09af7300eec23701" description="dotConnect for PostgreSQL extended role provider" applicationName="/" connectionStringName="DefaultConnection"/>
      </providers>
    </roleManager>
    <siteMap defaultProvider="PgSqlSiteMapProvider">
      <providers>
        <add name="PgSqlSiteMapProvider"
             type="Devart.Data.PostgreSql.Web.Providers.PgSqlSiteMapProvider,
                 Devart.Data.PostgreSql.Web, Version=7.4.478.0, Culture=neutral,
                 PublicKeyToken=09AF7300EEC23701"
             connectionStringName="ConnectionString"
             securityTrimmingEnabled="true"
           />
      </providers>
    </siteMap>
  </system.web>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json"/>
    </staticContent>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
      <remove name="OPTIONSVerbHandler"/>
      <remove name="TRACEVerbHandler"/>
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" 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.WebPages.Razor" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Razor" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EnvDTE" publicKeyToken="B03F5F7F11D50A3A" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-5.2.2.0" newVersion="5.2.2.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="Npgsql.NpgsqlFactory, Npgsql">
      <parameters>
        <parameter value="v12.0"/>
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="Devart.Data.PostgreSql" type="Devart.Data.PostgreSql.Entity.PgSqlEntityProviderServices, Devart.Data.PostgreSql.Entity, Version=7.4.478.6, Culture=neutral, PublicKeyToken=09af7300eec23701"/>
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework"/>
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="Devart.Data.PostgreSql"/>
      <add name="dotConnect for PostgreSQL" invariant="Devart.Data.PostgreSql" description="Devart dotConnect for PostgreSQL" type="Devart.Data.PostgreSql.PgSqlProviderFactory, Devart.Data.PostgreSql, Version=7.4.478.0, Culture=neutral, PublicKeyToken=09af7300eec23701"/>
    </DbProviderFactories>
  </system.data>
</configuration>


不确定这是查询中的输入错误还是视图中的问题,但截取的代码(非常缩写)似乎包含错误。你好像没有if语句

@User.IsInRole("admin") { }
应该是

@if (User.IsInRole("admin")) { }

您是否按照您链接的文章中的描述添加了角色管理器提供程序?@user1666620我更改了我的问题,因此,附加了web.config文件