C# ASP.NET角色在已部署的ASP.NET MVC应用程序中不起作用

C# ASP.NET角色在已部署的ASP.NET MVC应用程序中不起作用,c#,asp.net,asp.net-mvc,authentication,asp.net-membership,C#,Asp.net,Asp.net Mvc,Authentication,Asp.net Membership,我已经发布并部署了一个ASP.NET MVC应用程序,该应用程序使用ASP.NET身份验证的角色功能。在我的开发机器上,角色可以正常工作,但在我的服务器上,整个数据库(架构、数据和用户)以及具有完全权限的服务器上,角色不工作 下面是我的代码崩溃的一行: var exists = Roles.RoleExists("Administrator"); 由于某些原因,此类角色查询不起作用,但System.Web.Security.Roles.Enabled返回true和System.Web.Secu

我已经发布并部署了一个ASP.NET MVC应用程序,该应用程序使用ASP.NET身份验证的角色功能。在我的开发机器上,角色可以正常工作,但在我的服务器上,整个数据库(架构、数据和用户)以及具有完全权限的服务器上,角色不工作

下面是我的代码崩溃的一行:

var exists = Roles.RoleExists("Administrator");
由于某些原因,此类角色查询不起作用,但
System.Web.Security.Roles.Enabled
返回
true
System.Web.Security.Roles.Provider
设置正确


给出了什么?

如果让我猜一猜,您部署到的服务器上的IIS上的身份验证设置不正确。最有可能的情况是,您使用内置的开发人员服务器进行开发,现在已部署到IIS中具有默认设置的服务器。

我找到了解决方案,结果证明它与ASP.NET无关。我在SQL日志中发现的问题是,我的SQL用户没有数据库的执行权限。只需要一个简单的查询:

CREATE ROLE db_executor;
GRANT EXECUTE TO db_executor;

感谢大家的帮助。

代码崩溃的原因是什么?引发了什么异常?连接字符串呢?@mellamokb:老实说,我不太确定。我还没有找到在我的服务器上调试的方法,所以我只是得到标准的“错误”视图。我之所以知道是这条线引起了问题,是因为我将它分离成一个单独的方法,并发现崩溃发生在那里。关于如何进一步调试有什么想法吗?@kubal5003:请参阅我上面关于异常的评论。关于连接字符串:我设置的字符串有效,因为使用我的DB的其他组件有效。@Maxim:要查看服务器上的错误,请在
web.config
配置设置中临时设置
。这将位于
部分。打开服务器上的IIS管理控制台(或本地并连接到相关服务器上的IIS)。单击有问题的网站并转到验证。我想您需要启用windows身份验证才能获得可与角色进行比较的用户,但我现在没有时间进行快速测试。您可以使用CurrentContext获取用户和身份信息。设置一个临时页面,查看本地使用的用户以及服务器上的用户。您可能必须关闭服务器上的anon访问(不确定,因为我不知道您的设置);这是在同一个地方做的。