我最近在 生产环境 服务器上部署了一个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
属性后仍无法正常工作
UPDATE
情况的组合
我需要在这里更改我的应用程序名称:
然后,编辑Web.xml,正如Muthu所说 .
最后,我使用新的applicationName删除并再次创建了成员资格表
2 回答
我最近遇到了类似的问题 . 请检查以下内容:
数据库中创建的角色是否连接到 生产环境 服务器?
如果没有,请尝试使用 生产环境 服务器中的网站管理工具以正确创建角色 . 这是一篇非常好的文章:http://blogs.msdn.com/b/rahulso/archive/2006/03/09/how-to-use-web-site-administration-tool-without-installing-vs-2005.aspx .
当我使用角色管理器时,我不得不在连接到 生产环境 服务器的数据库中重新创建模式 . 为此,您需要对machine.config进行一些更改 . 即:将autogenerateschema = "true"添加到您的角色提供程序,并增加信任级别= "Full" .
我不确定你的情况是什么,但我希望这会有所帮助 .
问题可能是因为
您可能尚未复制/插入角色
当您的应用程序名称为/时,您已复制/添加它们,因此您可能必须将角色的应用程序ID更改/更新为新的应用程序ID,或使用新的应用程序名称创建角色
另外,我发现您没有使用默认的成员资格或角色提供程序 . 如果您不使用任何自定义提供程序,请坚持使用提供程序的默认条目(更改应用程序名称除外)