निम्नलिखित प्रदाता प्राप्त करें :
भूमिका प्रबंधक सुविधा सक्षम नहीं की गई है।
अब तक सब ठीक है।
क्या कहीं एक विधि है जिसे यह जांचने के लिए बुलाया जा सकता है कि भूमिका प्रबंधक सक्षम किया गया है या नहीं?
निम्नलिखित प्रदाता प्राप्त करें :
भूमिका प्रबंधक सुविधा सक्षम नहीं की गई है।
अब तक सब ठीक है।
क्या कहीं एक विधि है जिसे यह जांचने के लिए बुलाया जा सकता है कि भूमिका प्रबंधक सक्षम किया गया है या नहीं?
जवाबों:
आप बूलियन प्रॉपर्टी से पढ़कर ऐसा कर सकते हैं:
System.Web.Security.Roles.Enabled
यह तत्व की enabledविशेषता से प्रत्यक्ष रूप से पढ़ा roleManagerजाता है web.config:
<configuration>
<system.web>
<roleManager enabled="true" />
</system.web>
</configuration>
अद्यतन:
अधिक जानकारी के लिए, इस MSDN नमूने की जाँच करें: https://msdn.microsoft.com/en-us/library/aa354509(v=vs.110).aspx
roleManager से ऊपर जोड़ने के बाद सक्षम किया गया है। लेकिन अब मुझे अपवाद मिल रहा हैUnable to connect to SQL Server database
यदि आप यहां इसलिए पहुंचे क्योंकि आप नए का उपयोग कर रहे हैं ASP.NET Identity UserManager, तो आप वास्तव में क्या देख रहे हैं RoleManager:
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
roleManager आपको यह देखने के लिए एक्सेस देगा कि क्या भूमिका मौजूद है, बनाएं, आदि, और इसके लिए बनाई गई है UserManager
मैंने Google के माध्यम से कहीं और 2 सुझाव दिए हैं जो यह सुझाव देता है कि a) यह सुनिश्चित करते हुए कि आपका db कनेक्शनस्ट्रिंग (जो Roles का उपयोग कर रहा है) सही है और यह कि इसकी कुंजी सही वर्तनी है, और b) कि भूमिका प्रबंधक पर सक्षम ध्वज को सही पर सेट किया गया है। आशा है कि उन लोगों में से एक मदद करता है। इसने मेरे लिए किया।
क्या आपने Roles.Enabled की जाँच करने का प्रयास किया? इसके अलावा, आप रोल्स चेक कर सकते हैं। यह देखने के लिए कि कितने प्रदाता उपलब्ध हैं और आप डिफ़ॉल्ट प्रदाता के लिए रोल्स.प्रोवाइडर की जांच कर सकते हैं। यदि यह अशक्त है तो एक नहीं है।
इसमें उल्लिखित अपवाद के कारण मुझे यह प्रश्न मिला। मेरे Web.Config का कोई <roleManager>टैग नहीं था । मुझे एहसास हुआ कि भले ही मैंने इसे जोड़ा (जैसा कि इन्फोटेका ने सुझाव दिया था ), यह एक डेटाबेस अपवाद में समाप्त हो गया। यहां अन्य उत्तरों में सुझावों का पालन करने के बाद, किसी ने भी समस्या को पूरी तरह से हल नहीं किया।
चूंकि ये Web.Config टैग स्वचालित रूप से उत्पन्न हो सकते हैं, इसलिए इसे मैन्युअल रूप से जोड़कर हल करना गलत लगा। यदि आप इसी तरह के मामले में हैं, तो वेब पर आपके द्वारा किए गए सभी परिवर्तनों को हटा दें। Config और Visual Studio में:
अपने Web.config की जांच करें और अब आपके पास प्रोफ़ाइल , सदस्यता , सत्र टैग्स के अंदर और साथ ही नए भूमिका प्रबंधक टैग के <providers>अंदर कम से कम एक टैग होना चाहिए :
<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निर्माण करने के लिए दबाएँ और अब उस अपवाद के बिना डेटाबेस अद्यतन के लिए आगे बढ़ना ठीक होना चाहिए:
update-database -verboseऔर बीज विधि ठीक चलेगी (यदि आपने कहीं और गड़बड़ नहीं की है) और अपने डेटाबेस में कुछ तालिकाओं का निर्माण करें;यदि आप उपयोग कर रहे हैं तो आप ASP.NET Identity UserManagerइसे इस तरह भी प्राप्त कर सकते हैं:
var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
var roles = userManager.GetRoles(User.Identity.GetUserId());
यदि आपने उदाहरण के लिए गाइड से इंट में उपयोगकर्ता के लिए कुंजी बदल दी है तो इस कोड का उपयोग करें:
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>
यहां वह कोड है जिसे आपको अपने अकाउंट कंट्रोलर को MVC5 में डालने और बाद में किसी उपयोगकर्ता की भूमिकाओं की सूची प्राप्त करने की आवश्यकता है:
csharp
public async Task<ActionResult> RoleAdd(string UserID)
{
return View(await
UserManager.GetRolesAsync(UserID)).OrderBy(s => s).ToList());
}
Roles.GetRolesForUser()भूमिका प्रबंधक सुविधा का उपयोग करने और सक्षम करने की आवश्यकता नहीं है ।
web.config? मैंने इसे डालने की कोशिश कीApplication_Startऔर यह कहता हैThis method can only be called during the application's pre-start initialization phase.