में एक कस्टम रोल प्रदाता के साथ निनजेक्ट का उपयोग करना मैं एक एमवीसी 3 ऐप में कस्टम रोल प्रदाता का उपयोग करने की कोशिश कर रहा हूं। मुझे निजता का उपयोग कर सदस्यता प्रदाता ठीक से काम कर रहा है लेकिन भूमिका प्रदाता काम नहीं कर रहा है। सदस्यता प्रदाता को पैरामीटर रहित कन्स्ट्रक्टर की आवश्यकता नहीं होती है लेकिन भूमिका प्रदाता करता है। यहाँ कुछ कोड के टुकड़े है:एक एमवीसी 3 ऐप
Web.config
<membership>
<providers>
<clear/>
<add name="MyMembershipProvider" type="MyApp.Models.NHibernateMembershipProvider"
applicationName="myApp" />
</providers>
</membership>
<roleManager enabled="true">
<providers>
<add name="MyRolesProvider" type="MyApp.Models.NHibernateRoleProvider"
applicationName="myApp" />
</providers>
</roleManager>
मैं एक Ninject मॉड्यूल है।
public class MyNinjectModule : NinjectModule
{
public override void Load()
{
this.Bind<ISession>().ToMethod(
x => MyApp.MvcApplication.SessionFactoryData.GetCurrentSession());
// Respository
this.Bind<IUserRepository>().To<UserRepository>();
this.Bind<MembershipProvider>().To<NHibernateMembershipProvider>();
this.Bind<RoleProvider>().To<NHibernateRoleProvider>();
}
}
कस्टम सदस्यता प्रदाता
public class NHibernateMembershipProvider : MembershipProvider
{
private IUserRepository _repo;
public NHibernateMembershipProvider(IUserRepository repository)
{
_repo = repository;
}
...
भूमिका प्रदाता
public class NHibernateRoleProvider : RoleProvider
{
private IUserRepository _repo;
public NHibernateRoleProvider(IUserRepository repository)
{
_repo = repository;
}
...
मैं तो मेरे नियंत्रक कॉन्फ़िगर एक अधिकृत
[Authorize(Roles="Admin")]
public ActionResult Edit(int? id)
{
...
मैं इस त्रुटि की आवश्यकता होती है जब startin जी ऐप।
Parser Error Message: No parameterless constructor defined for this object.
Source Error:
Line 49: <roleManager enabled="true">
Line 50: <providers>
Line 51: <add name="MyRolesProvider" type="MyApp.Models.NHibernateRoleProvider"
Line 52: applicationName="myApp" />
Line 53: </providers>
मैं इतना भंडार ठीक इंजेक्शन की जा रही है, सदस्यता प्रदाता के माध्यम से उन तक पहुँच सकते हैं, लेकिन भूमिकाओं प्रदाता अलग हो रहा है। रोल प्रदाता को कन्स्ट्रक्टर-कम पैरामीटर की आवश्यकता क्यों होती है? निनजेक्ट के साथ भूमिका प्रदाता को काम करने का कोई आसान तरीका है। किसी भी मदद की सराहना की।
मैं अब भूमिका प्रदाता अधिकांश समय काम करना, लेकिन अगर मैं उपयोगकर्ता को प्रमाणीकृत करने का प्रयास करता हूं, तो लोड प्रदाता प्रदाता में भंडार का संदर्भ नहीं है (यह शून्य है)। यकीन नहीं है कि यह क्यों हो रहा है। – Matt
भंडार शून्य है कि कारण यह है कि निनजेक्टर भूमिका प्रदाता नहीं बना रहा है। यह एएसपी.नेट ढांचे द्वारा बनाया गया है, जो बदले में बहुत ही दोस्ताना नहीं है। यही कारण है कि इसे एक पैरामीटर रहित कन्स्ट्रक्टर की आवश्यकता होती है। – mrydengren