我最近在生产服务器上部署了一个asp.net 3.5项目。它使用角色(.net成员资格)。网站有效(显示页面,我可以登录)。
虽然角色在数据库中,但它们不能在生产服务器上运行。
我试过这个:
string[] roles = Roles.GetAllRoles();
但它返回一个空字符串。
用户和角色与aspnet_Applications
表
ApplicationName:/
LowerApplicationName:/
ApplicationId:5a354523-6cc2-40e7-be1e-d40f8e66a041
我认为它不起作用,因为我没有在Web.config中放置applicationName
属性行
<membership defaultProvider="WAESMembershipProvider">
<providers>
<clear />
<add name="MyMembershipProvider"
applicationName="/"
...
</providers>
</membership>
添加applicationName
属性
更新
情况组合
我需要在此处更改我的应用名称:
然后,编辑Web.xml,就像Muthu说的那样。
最后,我使用新的applicationName
删除并再次创建了成员资格表答案 0 :(得分:1)
我最近遇到了类似的问题。请检查以下内容:
我不确定你的情况是什么,但我希望这会有所帮助。
答案 1 :(得分:1)
问题可能是因为
当您的应用程序名称为/时,您已复制/添加它们,因此您可能必须将角色的应用程序ID更改/更新为新的应用程序ID,或使用新的应用程序名称创建角色
此外,我发现您尚未使用默认的成员资格或角色提供程序。如果您不使用任何自定义提供程序,请坚持使用提供程序的默认条目(更改应用程序名称除外)
<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>