3

我正在开发一个 ASP.NET MVC3 网站,并且正在使用 Microsoft ASP.NET Universal Providers。网络配置:

<connectionStrings>
<add name="MyContext" connectionString="data source=tcp:***.database.windows.net,1433;Initial Catalog=***;User Id=***;Password=***;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" providerName="System.Data.SqlClient" />
</connectionStrings>
...
<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
  <providers>
    <clear />
    <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider" connectionStringName="MyContext" applicationName="/" />
  </providers>
</roleManager>

Azure 中的 connectionStrings 没问题。我使用查询脚本添加的 Aspnet 表和存储过程。迁移添加的表中的数据。我在管理门户中检查了它。我可以获得个人资料成员资格和个人资料数据,但下面的代码返回空列表。

var userName = User.Identity.Name;
var userRoles = Roles.GetRolesForUser(userName).ToList();

userName 是正确的,并且表 aspnet_UsersInRoles 也包含正确的数据。页面上没有例外。为什么 userRoles 是空的?

4

1 回答 1

2

我通过创建从 SqlRoleProvider 继承的自定义提供程序来解决此问题。

于 2013-02-14T11:20:12.650 回答