में नियंत्रक उसी समाधान में, एक एएसपी.नेट एमवीसी 4 एप्लीकेशन Slick.App
और कक्षा पुस्तकालय Awesome.Mvc.Lib
है। Awesome.Mvc.Lib में एक नियंत्रक वर्ग शामिल है।अलग असेंबली और रूटिंग
public class ShinnyController : Controller
{
[HttpGet]
public string Index()
{
return "Hello, from Awesome.Mvc.Lib";
}
}
मैं बस, Awesome.Mvc.Lib को Slick.App से संदर्भ जोड़ने /shinny
के लिए आवेदन और बिंदु ब्राउज़र से चलाते हैं, मैं वास्तव में प्रतिक्रिया देखेंगे "हैलो, Awesome.Mvc.Lib से"।
यह ऐसा कुछ है जिसकी मुझे उम्मीद नहीं है। हर बार मैंने सोचा कि एएसपी.नेट एमवीसी वहां रखरखाव वाले नामस्थानों का सम्मान करता है। इसलिए, किसी अन्य नेमस्पेस के नियंत्रकों का खुलासा नहीं किया जाता है, कम से कम इससे पहले कि मैंने नहीं पूछा था।
मैंने नामस्थान पैरामीटर का उपयोग करने के लिए डिफ़ॉल्ट मार्ग पंजीकरण बदलने की कोशिश की।
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new [] { "Slick.App.Controllers" }
);
फिर भी, ShinnyController मार्ग अभी भी '/ shinny' के लिए मेल खाता है।
मुझे कोई चिंता है कि यह सही डिफ़ॉल्ट व्यवहार है। मेरा सवाल यह है कि, स्पष्ट रूप से कहने के लिए कि कौन से नियंत्रकों का खुलासा किया गया है और अलग-अलग वर्ग पुस्तकालय में नियंत्रकों से मिलान करने के लिए डिफ़ॉल्ट मार्ग को रोकें?
Unfortunatelly, इस वास्तव में क्या है मेरी समस्या नहीं है। मेरी समस्या यह है कि मेरे पास होस्ट एप्लिकेशन तक कोई पहुंच नहीं है, इसलिए कस्टम कंट्रोलर फैक्ट्री का निर्माण मेरे लिए काम नहीं करेगा। –
@alexanderb: नहीं, आप इसका उपयोग करके ऐसा कर सकते हैं: [असेंबली: System.Web.PreAplicationStartMethod (टाइपोफ (MvcTools.Hooks.PreAplicationStartCode), "प्रारंभ करें")], यह लिंक देखें: http: //blog.davidebbo। com/2011/02/register-your-http-modules-at-runtime.html शुरुआत में, आप यह करते हैं: System.Web.Mvc.ControllerBuilder.Current.SetControllerFactory (YOUR_ControllerFactory)); आपको बस इतना करना है कि होस्ट एप्लिकेशन को अपना डीएल लोड करने के लिए, जिसे आप web.config एंट्री द्वारा प्राप्त कर सकते हैं;) –