2016-06-09 11 views
16

मैं एएसपी.नेट एमवीसी कोर आरसी -2 का उपयोग कर रहा हूं। मेरे पास पूर्ण .NET ढांचे को लक्षित करने वाला एक वेब प्रोजेक्ट है। मेरे पास समाधान में एक अलग वर्ग पुस्तकालय भी है, जो पूर्ण ढांचे को लक्षित करता है।अलग विधानसभा में एएसपी.नेट कोर एमवीसी नियंत्रक

कक्षा पुस्तकालय में, मेरे पास एक नियंत्रक है, जो मार्ग विशेषता के साथ चिह्नित है। मैंने वेब प्रोजेक्ट से क्लास लाइब्रेरी का संदर्भ दिया है। यह असेंबली nuget पैकेज Microsoft.AspNetCore.Mvc v. 1.0.0-rc2-final का संदर्भ देता है।

यह मेरी समझ थी कि यह बाहरी नियंत्रक स्वचालित रूप से खोजा जाएगा, उदा। http://www.strathweb.com/2015/04/asp-net-mvc-6-discovers-controllers/

हालांकि यह मेरे लिए काम नहीं करता है- मैं मार्ग के यूआरएल पर ब्राउज़ करता हूं और मुझे एक खाली पृष्ठ मिलता है और यह मेरे नियंत्रक ब्रेकपॉइंट को हिट नहीं करता है।

कोई विचार यह काम कैसे प्राप्त करें?

दिलचस्प बात यह है कि यह .NET कोर फ्रेमवर्क को लक्षित करने वाली वेब प्रोजेक्ट्स के लिए काम करता प्रतीत होता है, क्लास लाइब्रेरी का संदर्भ भी .NET कोर को लक्षित करता है। लेकिन एक पूर्ण परियोजना को लक्षित करने वाली वेब प्रोजेक्ट के लिए नहीं, मानक .NET क्लास लाइब्रेरी का संदर्भ देना।

नोट: यह एमवीसी कोर है जो किसी भी MVC<=4 routing overrides के बिना इस तरह के परिदृश्य का समर्थन करने वाला माना जाता है।

+0

संभावित डुप्लिकेट [नियंत्रक वर्ग एक अलग असेंबली में है जब एएसपी.नेट एमवीसी में नियंत्रक को कैसे पंजीकृत करें?] (Http://stackoverflow.com/questions/7560005/how-to-register-a-controller -इंटर-एएसपी-नेट-एमवीसी-कब-द-कंट्रोलर-क्लास-इन-इन-ए) – Oscar

+0

यह एमवीसी कोर है - ब्रांड नया एएसपी.नेट स्टैक – booler

उत्तर

4

मेरा मानना ​​है कि आप आरसी 2 में निम्नलिखित ज्ञात समस्या को मार रहे हैं। https://github.com/aspnet/Mvc/issues/4674 (वैकल्पिक हल बग में बताया गया है)

यह तब से तय किया गया है, लेकिन केवल अगली फिल्म में उपलब्ध हो जाएगा (जब तक आप उपयोग करने के साथ ठीक कर रहे हैं हर रात को बनाता है)

36

फिर भी ASP.Net कोर में एक मुद्दा 1.0, सुनिश्चित नहीं है कि यह अब डिज़ाइन द्वारा है। सबसे आसान समाधान Startup.cs में यह करने के लिए/ConfigureServices

services.AddMvc() 
    .AddApplicationPart(typeof(<class in external assembly>).GetTypeInfo().Assembly) 
    .AddControllersAsServices(); 

AddApplicationPart स्पष्ट रूप से नियंत्रकों के लिए खोजों में विधानसभा शामिल है। AddControllersAsServices() को कॉल सभी खोज नियंत्रकों को सेवाओं के संग्रह में जोड़ देगा, और यदि आप इस लाइन के बाद ब्रेकपॉइंट डालते हैं और 'सेवाओं' का निरीक्षण करते हैं, तो आप पाए गए सभी नियंत्रक प्रकारों को संग्रह में देखेंगे।

आप यहां भी जांचना चाहेंगे: https://docs.asp.net/en/latest/migration/rc1-to-rtm.html#asp-net-5-mvc-compile-views क्योंकि खोज नियम अब आरसी 1 से नियंत्रकों के लिए बदल दिए गए हैं।

एक्शन रेसल्ट के बजाय IActionResult का उपयोग करना भी याद रखें!

+6

मेरे लिए केवल '.AddApplicationPart (टाइपऑफ (<कक्षा में बाहरी विधानसभा>) विधानसभा) 'पर्याप्त था। आप इसके बजाए दूसरी लाइन का भी उपयोग कर सकते हैं:'एड ऐप्लिकेशंसपार्ट (असेंबली.लोड ("बाहरी एस्परब्सनाम")); ' – Learner

+1

यह अब डिज़ाइन द्वारा होना चाहिए, इस तथ्य के बाद इसे चालू करना भयानक होगा। – Ciantic

+0

वही काम किया लेकिन – DanilGholtsman

संबंधित मुद्दे