0

我刚刚开始涉足 ASP.NET 安全性。有几个问题。1)我使用角色管理来限制对某些页面的访问。这是我的 web.config 的部分

<profile>
    <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" 
            type="System.Web.Profile.SqlProfileProvider, 
            System.Web, Version=2.0.0.0, Culture=neutral, 
            PublicKeyToken=b03f5f7f11d50a3a" 
            connectionStringName="LocalSqlServer" applicationName="/" />
    </providers>
</profile>
<roleManager enabled="true">
    <providers>
        <clear />
        <add connectionStringName="LocalSqlServer" 
            applicationName="/" name="AspNetSqlRoleProvider" 
            type="System.Web.Security.SqlRoleProvider, System.Web, 
            Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <add applicationName="/" name="AspNetWindowsTokenRoleProvider" 
            type="System.Web.Security.WindowsTokenRoleProvider, 
            System.Web, Version=2.0.0.0, 
            Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </providers>
</roleManager>

这工作正常。但是发生的事情是之前将 connecitonStringName 设置为“ApplicationServices”。而且它行不通。然后我将其更改为“LocalSqlServer”。它开始工作了。

所以我想明白,为什么会这样?另外,LocalSqlServer 只是连接字符串值的另一个任意名称吗?我检查了数据库,角色没有存储在那里。那么角色存储在哪里呢?

这些都是新手问题。我提前感谢您的耐心等待

4

3 回答 3

0

因为当您声明 时AspNetSqlProfileProvider,您指定connectionStringName="LocalSqlServer"告诉它使用哪个连接。

于 2013-08-13T15:22:04.540 回答
0

为什么会这样?

使用错误的连接字符串意味着您的应用程序将找不到成员资格和角色表。

LocalSqlServer 只是连接字符串值的另一个任意名称吗?

在 web.config 中,您将看到一个名为的连接字符串LocalSqlServer

角色存储在哪里?

aspnet_Roles如果它是旧的成员资格框架,或者UserProfile它是新的 SimpleMembershipProvider ,请查看表格。

于 2013-08-13T15:30:23.927 回答
0

如果您在数据库中没有看到 Membership 表,您应该在那里添加它们。有一个特殊的工具可以帮助做到这一点:

在 VisualStudio 命令行中运行以下命令:aspnet_regsql 或在此处找到它:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe.

只需按照它的说明进行操作。

于 2013-08-13T15:36:25.450 回答