回答
您可以通過從布爾屬性讀做:
System.Web.Security.Roles.Enabled
這是從roleManager
元素的enabled
屬性在web.config
直接讀取:
<configuration>
<system.web>
<roleManager enabled="true" />
</system.web>
</configuration>
更新:
有關更多信息,請查看此MSDN示例:https://msdn.microsoft.com/en-us/library/aa354509(v=vs.110).aspx
我在Google的其他地方發現了2條建議,建議a)確保您的db connectionstring(Roles使用的那個)是正確的,並且它的關鍵字拼寫正確,並且b)RoleManager上的Enabled標誌是設置爲true。希望這些幫助之一。它爲我做了。
您是否嘗試檢查Roles.Enabled?此外,您可以檢查Roles.Providers以查看有多少提供程序可用,並且您可以檢查默認提供程序的Roles.Provider。如果它是空的,那麼就沒有一個。
謝謝你的回答。但這不是我想要的。 我想要一個方法來檢查角色管理器功能是否啓用,而不是爲此目的緩存ProviderException。 – gsharp 2010-10-12 07:52:36
如果你是因爲你使用新ASP.NET
Identity
UserManager
來到這裏,你實際上尋找的是RoleManager
:
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
roleManager
將給您看是否存在角色,創建等,加上它創建UserManager
不是真的這個職位已經3歲了;-) – gsharp 2014-04-23 11:18:15
3歲的孩子與什麼有什麼關係?我從Google接受了這篇文章,因爲我正在處理設置身份的問題。既然我找到了答案,下一位處理與Google相同問題的人會被Google帶到這裏... – 2014-04-23 20:23:50
此外,身份用戶管理器還有一個用於獲取給定用戶角色的有用功能: UserManager.GetRolesAsync(User.Identity.GetUserId()); – keithl8041 2015-11-17 22:59:04
我發現這個問題,因爲它提到的例外。我的Web.Config沒有任何<roleManager>
標籤。我意識到,即使我添加它(如Infotekka suggested),它最終會導致數據庫異常。在遵循這裏其他答案的建議之後,沒有完全解決這個問題。
由於這些Web.Config標籤可以自動生成,因此通過手動添加它們來解決它感覺不對。如果你是在一個類似的案件,撤消到Web.config中和在Visual Studio中的所有更改:
- 按下Ctrl鍵+Q,類型的NuGet,然後點擊「管理的NuGet包」 ;
- 按下Ctrl鍵+Ë,類型提供商並在列表中就應該顯示「微軟ASP.NET通用提供商核心庫」和「微軟ASP。NET通用提供商爲的LocalDB「(均由微軟創建);
- 點擊在他們兩人的安裝按鈕,關閉窗口的NuGet;
檢查你的web.config,現在你應該至少有一個
<providers>
標籤內檔案,會員,SessionState的標籤,也是新RoleManager標籤內,像這樣:<roleManager defaultProvider="DefaultRoleProvider"> <providers> <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=NUMBER" connectionStringName="DefaultConnection" applicationName="/" /> </providers> </roleManager>
添加
enabled="true"
像這樣:<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
按F6建設,現在它應該是確定進入數據庫更新,而不必是例外:
- 按Ctrl鍵 + Q,類型管理器,點擊「包管理器控制檯」;
update-database -verbose
類型和種子方法將運行得很好(如果你還沒有搞錯別的地方),並在你的數據庫中創建幾個表;- 按按Ctrl + W¯¯ + 大號打開服務器資源管理器,你應該能夠在數據連接> DefaultConnection>表的角色和UsersInRoles檢查新創建的表中表!
「_Since Web.Config字段自動生成_」 這不完全正確。雖然許多NuGet軟件包會自動調整配置文件,但沒有設置規則要求他們這樣做。 – 2016-04-19 21:59:47
@KevinR。感謝凱文,我只是重述了這一部分。 – CPHPython 2016-04-20 09:32:34
如果您正在使用ASP.NET Identity UserManager
你可以得到這樣的,以及:
var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
var roles = userManager.GetRoles(User.Identity.GetUserId());
如果你已經改變了密鑰的用戶從GUID來INT例如使用此代碼:
var roles = userManager.GetRoles(User.Identity.GetUserId<int>());
<roleManager
enabled="true"
cacheRolesInCookie="false"
cookieName=".ASPXROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
cookieProtection="All"
defaultProvider="AspNetSqlRoleProvider"
createPersistentCookie="false"
maxCachedResults="25">
<providers>
<clear />
<add
connectionStringName="MembershipConnection"
applicationName="Mvc3"
name="AspNetSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add
applicationName="Mvc3"
name="AspNetWindowsTokenRoleProvider"
type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
- 1. 角色管理器功能尚未啓用。 MVC 4
- 2. 角色管理器功能尚未啓用,但它在配置
- 3. 角色管理器功能尚未啓用使用部分視圖
- 4. Mvc運行時錯誤 - 角色管理器功能尚未啓用
- 5. 「角色管理器功能尚未啓用」 - 從外部Web服務訪問SimpleMembership
- 6. 「角色管理器功能尚未啓用」,configuration.cs在一個單獨的項目中
- 7. WebSecurity.InitializeDatabaseConnection失敗,並且「角色管理器功能尚未啓用」。當從控制檯程序
- 8. 只爲管理員角色啓用鏈接和其他功能
- 9. 在SQL Server角色提供程序的單元測試期間,「角色管理器功能尚未啓用」錯誤
- 10. 如何啓用管理員角色
- 11. Asp.net MVC角色管理器
- 12. 角色功能
- 13. 角色功能
- 14. AVD管理器未啓動
- 15. Buddypress用戶角色管理
- 16. asp.net角色管理
- 17. Rails:角色/管理
- 18. ASP.NET角色管理
- 19. AspNet.Identity角色管理
- 20. 此項目尚未啓用結算功能
- 21. 角色界面和管理角色
- 22. Windows 7 IIS管理器缺少「添加角色和功能」選項
- 23. 在ASP.NET網站管理角色管理
- 24. Windows Workflow 4 + ASP.NET角色管理器
- 25. WSO2身份服務器 - 角色管理
- 26. asp.net角色管理器錯誤
- 27. 啓用模擬並將Powershell用作管理員角色
- 28. 在MVC5中啓用和使用角色管理
- 29. Azure Web角色未啓動
- 30. 用戶在角色「管理員」,但[授權(角色=「管理員」)]將不驗證
我如何從代碼而不是'web.config'做到這一點?我試着把它放在'Application_Start'中,它說''這個方法只能在應用程序的預啓動初始化階段被調用。' – Maslow 2013-05-08 15:17:29
這是在web.config中的位置? – 2013-06-03 07:10:00
<結構> \t \t \t \t 配置> –
Infotekka
2013-06-04 18:21:44