पर लोड अन्य असेंबली में नियंत्रक, विचार और मॉडल डालता है हम वर्तमान में एक गतिशील प्रणाली विकसित कर रहे हैं जिसे रनटाइम पर कुछ एक्सटेंशन लोड करने की आवश्यकता है।एएसपी एमवीसी कोर आरसी 1 रनटाइम
एक एक्सटेंशन उसी वास्तुकला पर बनाया गया है जो एमवीसी ऐप है, जिसका मतलब नियंत्रक फ़ोल्डर है, जो नियंत्रक, संबंधित दृश्य और दृश्यकंपेंट्स के साथ समाप्त होता है जो/व्यू/कंट्रोलरनाम में स्थित हैं और संबंधित मॉडल हैं।
यह परियोजना के लिए संदर्भ के रूप में इस परियोजना को जोड़ना संभव नहीं है, इसलिए मैं एक मिडलवेयर है कि उन्हें रनटाइम पर लोड बनाया:
foreach (var item in extensions)
{
Assembly.LoadFrom([email protected]"extensions\{item.Name}.dll");
}
अब तक तो अच्छा है, वे क्रम पर लोड कर रहे हैं। लेकिन, जब मैं विस्तार के नियंत्रक में से एक में बनाए गए मार्ग तक पहुंचने का प्रयास करता हूं, तो वेबसाइट मुझे 404 प्रतिक्रिया देता है।
मैंने एक्सटेंशन को संदर्भ के रूप में जोड़ने की कोशिश की और यह अच्छी तरह से काम करता है, इसलिए यह मेरे एक्सटेंशन के अंदर कोई समस्या नहीं है।
मैं अपने डीएल के नियंत्रक को एमवीसी मुख्य साइट में पंजीकृत करने का प्रबंधन कैसे कर सकता हूं?
यह एएसपी MVC 4 नहीं है, यह एएसपी कोर है, इसलिए ऐसा लगता है कि इस उत्तर मान्य नहीं है: asp.net mvc put controllers into a separate project
हालांकि निर्भरता इंजेक्शन एक समाधान हो सकता है, मैं अपने एक्सटेंशन बनाने के लिए किसी भी समाधान नहीं मिला है अपने लिए सेवाएं पंजीकृत करें (और यह एक्सटेंशन निर्माता के लिए जटिल है)।
एक्सटेंशन के लिए मेरे मार्ग परिभाषित किया गया है नियंत्रक पक्ष:
[Route("[controller]/[action]")]
public class LotteryController : Controller { ... }
मेरी Startup.cs पर, मैं रखा है वास्तव में डिफ़ॉल्ट मार्ग:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
तथ्य है, मैं अपने एक्सटेंशन चाहते मार्ग सक्षम करने के लिए: http://localhost/Lottery/Index
और यह मुझे एक खाली पृष्ठ देता है। मेरे वर्तमान सूचकांक कार्रवाई, परीक्षण के लिए,
// GET Index
public IActionResult Index()
{
return Content("From extension");
//return View();
}
यहाँ है और मेरी विस्तार परियोजना पदानुक्रम
क्या यह संभव है कि समस्या एक्सटेंशन लोड करने के लिए जिम्मेदार कोड के बजाय समस्या से संबंधित है? शायद आप Startup.cs में अपने कंट्रोलर कोड और/या एमवीसी कॉन्फ़िगरेशन प्रदान कर सकते हैं? – lawst
उन्हें मेरे प्रश्न – cdie
पर जोड़ा गया ठीक है तो ऐसा लगता है कि आप डिफ़ॉल्ट रूटिंग का उपयोग कर रहे हैं। क्या आप "इंडेक्स" के लिए नियंत्रक विधि भी प्रदान कर सकते हैं? आपने अपने प्रश्न में "व्यू/कंट्रोलरनाम" का भी उल्लेख किया है, हालांकि डिफ़ॉल्ट दृश्य निर्देशिका संरचना "व्यू/कंट्रोलरनाम" होना चाहिए, तो क्या आप यह भी पुष्टि कर सकते हैं कि दृश्य सही जगह पर स्थित है? – lawst