2012-09-23 13 views
5

SimpleMembersihp'i bir MVC4 webine eklemek basit bir şey olurdu. Öyle değil. Şablonlu kod (ör. C#) onu desteklemeye çok elverişlidir, ancak web.config çoğunlukla agnostiktir - herhangi bir güvenlik mekanizmasını yapılandıran elemanlardan yoksundur. Pluralsight'ta Scott Allen'ın MVC4 eğitimini izliyordum - bu EF malzeme ile karışık aspnet-Üyelik. Belki bir şey özledim, ama C# üyelik sınıfları aspnet-Üyelik ile etkileşim değildi, SimpleMembership yapıyorlardı. Bu nedenle, aspnet-Üyelik kaldırıldı, ancak şimdi 'update-database' için PackageManager alamıyorum. "WebSecurity.InitializeDatabaseConnection yöntemini çağırmalısınız ..." dan şikayet ediyor. Bu yüzden, aramayla bir _AppStart.cshtml dosyası ekledim, ancak PM habersiz görünüyor. _AppStart.cshtml:_AppStart.cshtml, PackageManager, WebMatrix

@using WebMatrix.WebData; 
@{ 
    WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", true); 
} 

Web.config:

<appSettings> 
    <add key="enableSimpleMembership" value="true" /> 
    <add key="webpages:Version" value="2.0.0.0" /> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="PreserveLoginUrl" value="true" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 

    <roleManager enabled="true" defaultProvider="simple"> 
    <providers> 
     <clear/> 
     <add name="simple" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" /> 
     </providers> 
    </roleManager> 


    <membership defaultProvider="simple"> 
     <providers> 
     <clear/> 
     <add name="simple" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
     </providers> 
    </membership 

Configuration.cs:

protected override void Seed(eManager.Web.Infrastructure.DepartmentDb context) 
{ 
    context.Departments.AddOrUpdate(d => d.Name, 
     new Department() { Name = "Engineering" }, 
     new Department() { Name = "Sales" }, 
     new Department() { Name = "Shipping" }, 
     new Department() { Name = "Human Resources" } 
    ); 

    SimpleRoleProvider roles = new WebMatrix.WebData.SimpleRoleProvider(); 
    SimpleMembershipProvider membership = new SimpleMembershipProvider(); 
    if (!roles.RoleExists("Admin")) 
    { 
     roles.CreateRole("Admin"); 
    } 

    //if (membership.GetUser("ej", false) == null) 
    //{ 
     // membership.CreateUserAndAccount("ej", "[email protected]", false); 
     // string[] u = { "ej" }; 
     // string[] r = { "Admin" }; 
     // roles.AddUsersToRoles(u, r); 
     //} 
} 

rol "Yönetici" oluşturulmaz.? global.asax.cs

_appStart.cshtml içinde Application_Start için kod

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", true);

ekleyerek

+0

sizin kod örnekleri genelleme ve yaşıyorsanız gerçek sorunun ne olduğunu kesin olarak belirlemek Lütfen yeni bir dosya oluşturmak ve kök Klasör içine koyun. –

+1

Proje ağacınız dosyada nereye ekledi? Web uygulamasının köküne ekledim ve benim için çalıştı. Saygılarımızla – Jaime

cevap

İlgili konular