2013-02-13 113 views
3

我正在開發一個ASP.NET MVC3網站,我正在使用Microsoft ASP.NET Universal Providers。 Web.config:在Azure和MVC中的成員角色

<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表和storedprocedures。遷移中添加的表中的數據。我在管理入口檢查了它。 我可以獲取個人資料成員資格和個人資料數據,但下面的代碼會返回空列表。

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

userName正確,表aspnet_UsersInRoles也包含正確的數據。 頁面上沒有例外。 爲什麼userRoles是空的?

回答

2

我通過創建自定義提供程序來修復此問題,該提供程序從SqlRoleProvider繼承。