سؤال

أتلقى الخطأ التالي عند محاولة تشغيل تطبيق ASP.NET MVC:

وجد طلب "حساب" وحدات تحكم المطابقة التالية: uqs.Controllers.Admin.AccountController MvcApplication1.Controllers.AccountController

لقد بحثت في المشروع عن MvcApplication1.Controllers.AccountController لإزالته ، لكن لا يمكنني العثور على تطابق.

أحاول تسجيل طريق لإصلاحه:

 routes.MapRoute(
     "LogAccount", // Route name
     "{controller}/{action}/{id}", // URL with parameters
     new { controller = "Account", action = "LogOn", id = "" },
     new string[] { "uqs.Controllers.Admin" } // Parameter defaults
 );

لكن هذا لم يحلها.

تم العثور على أنواع متعددة تتطابق مع وحدة التحكم المسماة "حساب".

كيف يمكنني إصلاح هذه المشكلة؟

هل كانت مفيدة؟

المحلول

لا يمكن أن يكون لديك أكثر من وحدة تحكم واحدة Account في التطبيق الخاص بك ، حتى في مساحات الأسماء المختلفة.

يجب عليك تقسيم وحدات التحكم هذه بواسطة Area (ميزة في ASP.NET MVC 2).

إذا قمت بإجراء اكتشاف ل AccountController ستجد جميع وحدات التحكم المسمى Account في طلبك ؛ ونقلهم إلى مختلف Areas إذا كنت تريد كلاهما ، أو حذف واحدة.

نصائح أخرى

إذا قمت بإعادة تشكيل مشروعك وقمت بتغيير مساحة الاسم والتجميع الافتراضية من "mvcapplication1" إلى "uqs" ، فقد ينتهي بك الأمر بمجموعتين في دليل bin الخاص بك (واحد جديد والقديم). يمكنك الحصول على هذا الخطأ لأن حساب الحساب في كلتا التجميعات.

قم بتنظيف دليل الحاوية الخاص بك من MVCapplication1.dll القديم.

كان نفس المشكلة. نظفت الصندوق وكنت على ما يرام.

يمكن أن يحدث تباين مربك بعض الشيء في المشكلة (مماثلة من حيث أنها تسبب نفس رسالة الخطأ) حتى مع وجود مساحات الأسماء المقدمة. MVC 3 أعتقد أنه أكثر انتقائية من MVC 2 على هذه الجبهة.


اجابة قصيرة:

تأكد من أن مساحة وحدة التحكم الخاصة بك هي في الواقع مساحة الاسم المحددة في MapRoute يتصل!!


اجابة طويلة:

لدي 3 مجالات: default ("") / Facebook / Store وكان كل منهم لديهم AdminController

لديّ الطريق تم تعيينه مثل هذا (لمنطقي الافتراضي):

routes.MapRoute(
     "Default",
     "{controller}/{action}/{id}",
     new { controller = "Gateway", action = "Index", id = UrlParameter.Optional },
     new string[] { "RR.Controllers.Main" }
);

أعطى طلب /المسؤول الخطأ التالي:

تم العثور على أنواع متعددة تتطابق مع وحدة التحكم المسماة "المسؤول". يمكن أن يحدث هذا إذا كان المسار الذي يخدم هذا الطلب ('{Controller}/{Action}/{id}') لا يحدد مساحات الأسماء ...

وجد طلب "المسؤول" وحدات التحكم المطابقة التالية:

rr.facebookControllers.AdMinController
RR.Controllers.AdMinController
rr.storecontrollers.admincontroller

لكن انتظر دقيقة! ألم أحدد مساحة اسم وحدة التحكم ....؟ ماذا يحدث هنا.... ؟

حسنًا ، اتضح أن مساحة اسم وحدة التحكم في المنطقة الافتراضية الخاصة بي كانت RR_MVC.Controller بدلاً من Rolling_Razor_MVC.Controller.Main.

لسبب ما في MVC 2 ، لم يعطي هذا مشكلة ، ولكن في MVC 3. أعتقد أن MVC 3 يتطلب منك فقط أن تكون أكثر وضوحًا عندما يكون هناك غموض محتمل.

AccountController يتم إنشاؤه تلقائيًا بواسطة قالب ASP.NET MVC Visual Studio. يقع في Controllers\AccountController.cs. حاول البحث عنه في المشروع وحذفه.

واجهت هذه المشكلة ...

تم حلها عن طريق إزالة مرجع المشروع في أحد ملفات .csproj

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top