C# asp.net部署中缺少成员角色?
我最近在生产服务器上部署了一个asp.net 3.5项目。它使用角色(.net成员身份)。该网站工作(显示页面,我可以登录) 虽然角色在数据库中,但它们在生产服务器上不起作用 我试过这个:C# asp.net部署中缺少成员角色?,c#,asp.net,windows-server-2003,C#,Asp.net,Windows Server 2003,我最近在生产服务器上部署了一个asp.net 3.5项目。它使用角色(.net成员身份)。该网站工作(显示页面,我可以登录) 虽然角色在数据库中,但它们在生产服务器上不起作用 我试过这个: string[] roles = Roles.GetAllRoles(); 但它返回一个空字符串 用户和角色与aspnet\u应用程序表中的唯一行相关 ApplicationName:/ LowerApplicationName:/ ApplicationId:5a354523-6cc2-40e7-be1e
string[] roles = Roles.GetAllRoles();
但它返回一个空字符串
用户和角色与aspnet\u应用程序
表中的唯一行相关
ApplicationName:/
LowerApplicationName:/
ApplicationId:5a354523-6cc2-40e7-be1e-d40f8e66a041
我认为它不起作用,因为我没有将applicationName
属性行放在Web.config中
<membership defaultProvider="WAESMembershipProvider">
<providers>
<clear />
<add name="MyMembershipProvider"
applicationName="/"
...
</providers>
</membership>
我最近遇到了类似的问题。请检查以下内容:
在数据库中创建的角色是否连接到生产服务器
如果没有,请尝试在生产服务器中使用网站管理工具,以便正确创建角色。这是一篇关于这方面的非常好的文章:
当我使用角色管理器时,我必须在连接到生产服务器的数据库中重新创建模式。为此,您需要对machine.config进行一些更改。i、 e:将autogenerateschema=“true”添加到角色提供程序中,并增加信任级别=“Full”
我不确定您的情况是什么,但我希望这会有所帮助。问题可能是因为
- 您可能尚未复制/插入角色
- 当应用程序名为/时,您已经复制/添加了它们,因此您可能必须将角色的应用程序id更改/更新为新的,或者使用新的应用程序名创建角色
我还看到您没有使用默认的成员资格或角色提供程序。如果不使用任何自定义提供程序,请坚持使用提供程序的默认条目(更改应用程序名称除外)
是否启用角色管理器?添加“/”表示当前应用程序。所以,这可能是问题的另一个原因。你启用了RoleManager?谢谢aleafonso的链接,我正在寻找一个while@aurahama很乐意帮忙。如果你到时能投赞成票,我将不胜感激。啦啦队员,我没有nowMuthu的特权,当成员资格和配置文件块aplicationName属性上的“使用自动完成”选项出现在上下文菜单中时,但它不会出现在roleManager块中。这意味着什么?自动完成并不重要,也从来不是我可靠的朋友。最简单的方法是在VisualStudio2010中创建一个新的Asp.NETMVC3应用程序,默认情况下,除了应用程序名部分之外,它将为您创建许多这样的应用程序。然后您可以将其与当前配置进行比较并修复它。
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="YourAppName" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="YourAppName" />
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="YourAppName" />
</providers>
</roleManager>