我已经发布并部署了一个使用ASP.NET身份验证的角色功能的ASP.NET MVC应用程序。在我的开发机器上,Roles工作正常 - 但在我的服务器上,我已经转移了构建,整个数据库(架构,数据和用户),并具有完全权限,角色不起作用。
以下是我的代码崩溃的行:
var exists = Roles.RoleExists("Administrator");
由于某些原因,此类角色查询无效,但System.Web.Security.Roles.Enabled
返回true
并且System.Web.Security.Roles.Provider
设置正确。
是什么给出了?
答案 0 :(得分:2)
如果我不得不猜测,在您部署到的服务器上的IIS上验证设置不正确。最有可能的是,您使用内置的开发人员服务器进行开发,现在已将其部署到IIS中具有默认设置的服务器。
答案 1 :(得分:1)
我找到了解决方案,结果与ASP.NET无关。我在SQL日志中发现的问题是我的SQL用户没有数据库的EXECUTE权限。所需要的只是一个简单的查询:
CREATE ROLE db_executor;
GRANT EXECUTE TO db_executor;
感谢大家的帮助。