Aşağıdaki ProviderException var :
Rol Yöneticisi özelliği etkinleştirilmedi.
Çok uzak çok iyi.
Rol Yöneticisi'nin etkinleştirilip etkinleştirilmediğini kontrol etmek için çağrılabilecek bir yöntem var mı?
Aşağıdaki ProviderException var :
Rol Yöneticisi özelliği etkinleştirilmedi.
Çok uzak çok iyi.
Rol Yöneticisi'nin etkinleştirilip etkinleştirilmediğini kontrol etmek için çağrılabilecek bir yöntem var mı?
Yanıtlar:
Bunu şu adresteki boole özelliğinden okuyarak yapabilirsiniz:
System.Web.Security.Roles.Enabled
Bu doğrudan bir okuma olduğu enabled
oznıtelığı roleManager
içinde unsuru web.config
:
<configuration>
<system.web>
<roleManager enabled="true" />
</system.web>
</configuration>
Güncelleme:
Daha fazla bilgi için şu MSDN örneğine göz atın: https://msdn.microsoft.com/en-us/library/aa354509(v=vs.110).aspx
roleManager
etkinleştirilir. Ama şimdi istisna alıyorumUnable to connect to SQL Server database
Eğer buraya yenisini kullandığınız için ASP.NET
Identity
UserManager
geldiyseniz, aslında aradığınız şey RoleManager
:
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
roleManager
rolün var olup olmadığını, oluşturmayı, vb. UserManager
Google'da başka bir yerde, a) db connectionstring'inizin (Rol'lerin kullandığı) doğru olduğundan ve anahtarın doğru yazıldığından ve b) RoleManager'da Etkin bayrağının true olarak ayarlandığından emin olan başka bir yerde 2 öneri buldum. Umarım bunlardan biri yardımcı olur. Benim için oldu.
Rolleri kontrol etmeyi denediniz mi? Etkin mi? Ayrıca, kaç sağlayıcı bulunduğunu görmek için Roles.Providers'ı ve varsayılan sağlayıcı için Roles.Provider'ı kontrol edebilirsiniz. Eğer boşsa, o zaman kimse yoktur.
Bu soruyu, içinde belirtilen istisna nedeniyle buldum. Web.Config öğemin <roleManager>
etiketi yok. ( Infotekka'nın önerdiği gibi) eklesem bile , bir Veritabanı istisnasıyla sonuçlandığını fark ettim . Buradaki diğer cevaplardaki önerileri izledikten sonra, hiçbiri sorunu tam olarak çözmedi.
Bu Web.Config etiketleri otomatik olarak oluşturulabildiğinden, bunları manuel olarak ekleyerek çözmek yanlış hissetti. Benzer bir durumdaysanız, Web.Config ve Visual Studio'da yaptığınız tüm değişiklikleri geri alın:
Web.config dosyanızı kontrol edin ve şimdi Profil , Üyelik , SessionState etiketlerinin içinde ve ayrıca yeni RoleManager etiketinin içinde en az bir <providers>
etiketinizin olması gerekir :
<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>
Şöyle ekleyin enabled="true"
:
<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
F6Oluşturmak için basın ve şimdi bir istisna olmadan bir veritabanı güncellemesine ilerlemek için Tamam olmalıdır:
update-database -verbose
ve Tohum yöntemi iyi çalışır (başka bir yere bulaşmadıysanız) ve Veritabanınızda birkaç tablo oluşturun;Eğer kullanıyorsanız ASP.NET Identity UserManager
bu şekilde de alabilirsiniz:
var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
var roles = userManager.GetRoles(User.Identity.GetUserId());
Örneğin, kullanıcı anahtarını Guid'den Int'ye değiştirdiyseniz, bu kodu kullanın:
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>
Bir kullanıcının rollerinin listesini almak için MVC5 ve sonraki sürümlerde Hesap Denetleyicinize eklemeniz gereken kod şunlardır:
csharp
public async Task<ActionResult> RoleAdd(string UserID)
{
return View(await
UserManager.GetRolesAsync(UserID)).OrderBy(s => s).ToList());
}
Roles.GetRolesForUser()
Rol Yöneticisi Özelliğini kullanmaya ve etkinleştirmeye gerek yoktur .
web.config
? Takmayı denedimApplication_Start
ve diyorThis method can only be called during the application's pre-start initialization phase.