พบหลายประเภทที่ตรงกับตัวควบคุมที่ชื่อว่า 'บ้าน'


318

ขณะนี้ฉันมีโครงการ MVC3 สองรายการที่ไม่เกี่ยวข้องซึ่งโฮสต์ออนไลน์

หนึ่งทำงานได้ดีอื่น ๆ ไม่ทำงานให้ฉันข้อผิดพลาด:

พบหลายประเภทที่ตรงกับตัวควบคุมที่ชื่อว่า 'บ้าน' สิ่งนี้อาจเกิดขึ้นได้หากเส้นทางที่ให้บริการคำขอนี้ ('{controller} / {action} / {id}') ไม่ได้ระบุเนมสเปซเพื่อค้นหาคอนโทรลเลอร์ที่ตรงกับคำขอ

หากเป็นกรณีนี้ให้ลงทะเบียนเส้นทางนี้โดยเรียกโอเวอร์โหลดของวิธีการ 'MapRoute' ที่ใช้พารามิเตอร์ 'namespaces'

วิธีที่ hoster ของฉันทำงานคือเขาให้การเข้าถึง FTP แก่ฉันและในโฟลเดอร์นั้นฉันมีอีกสองโฟลเดอร์หนึ่งโฟลเดอร์สำหรับแต่ละแอปพลิเคชันของฉัน

ftpFolderA2 / foo.com

ftpFolderA2 / bar.com

foo.com ทำงานได้ดีฉันเผยแพร่แอปพลิเคชันของฉันไปยังระบบไฟล์ในท้องถิ่นแล้ว FTP เนื้อหาและใช้งานได้

เมื่อฉันอัปโหลดและพยายามเรียกใช้ bar.com ปัญหาดังกล่าวเกิดขึ้นและทำให้ฉันไม่สามารถใช้งานเว็บไซต์ของฉันได้ ทั้งหมดในขณะที่ foo.com ยังคงใช้งานได้

เป็น bar.com ค้นหาจากตัวควบคุมทุกที่ภายในของ ftpFolderA2 และที่ว่าทำไมมันหาอีกHomeController? ฉันจะบอกให้ดูเฉพาะในโฟลเดอร์คอนโทรลเลอร์เท่าที่ควรได้อย่างไร

ข้อเท็จจริง:

  1. ไม่ได้ใช้พื้นที่ เหล่านี้เป็นสองโครงการที่ไม่เกี่ยวข้องอย่างสมบูรณ์ ฉันวางแต่ละโครงการที่เผยแพร่ในแต่ละโฟลเดอร์ที่เกี่ยวข้อง ไม่มีอะไรแฟนซี
  2. แต่ละโครงการมี 1 HomeController เท่านั้น

บางคนสามารถยืนยันว่านี่เป็นปัญหาหรือไม่


คำถามที่ไม่ชัดเจนมาก คุณใช้พื้นที่หรือไม่ ปัญหาเกิดขึ้นเฉพาะที่หรือไม่
Darin Dimitrov

1
@Darin: แก้ไขข้อมูลนั้นใน
โบลิเวียเท่านั้นที่นี่

คำตอบ:


473

ข้อความแสดงข้อผิดพลาดนี้มักเกิดขึ้นเมื่อคุณใช้พื้นที่และคุณมีชื่อคอนโทรลเลอร์เดียวกันภายในพื้นที่และรูท ตัวอย่างเช่นคุณมีสองอย่าง:

  • ~/Controllers/HomeController.cs
  • ~/Areas/Admin/Controllers/HomeController.cs

เพื่อแก้ไขปัญหานี้ (ตามข้อความแสดงข้อผิดพลาดแนะนำให้คุณ) คุณสามารถใช้เนมสเปซเมื่อประกาศเส้นทางของคุณ ดังนั้นในคำนิยามเส้นทางหลักในGlobal.asax:

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    new[] { "AppName.Controllers" }
);

และในของคุณ~/Areas/Admin/AdminAreaRegistration.cs:

context.MapRoute(
    "Admin_default",
    "Admin/{controller}/{action}/{id}",
    new { action = "Index", id = UrlParameter.Optional },
    new[] { "AppName.Areas.Admin.Controllers" }
);

หากคุณไม่ได้ใช้พื้นที่ดูเหมือนว่าทั้งสองแอปพลิเคชันของคุณโฮสต์อยู่ภายในแอปพลิเคชัน ASP.NET เดียวกันและเกิดข้อขัดแย้งขึ้นเนื่องจากคุณมีตัวควบคุมเดียวกันที่กำหนดไว้ในเนมสเปซที่แตกต่างกัน คุณจะต้องกำหนดค่า IIS ให้โฮสต์ทั้งสองนั้นเป็นแอปพลิเคชัน ASP.NET แยกต่างหากหากคุณต้องการหลีกเลี่ยงความขัดแย้งประเภทนั้น สอบถามผู้ให้บริการโฮสต์ของคุณเกี่ยวกับเรื่องนี้หากคุณไม่มีสิทธิ์เข้าถึงเซิร์ฟเวอร์


ฉันไม่ได้ใช้พื้นที่เลย แอปพลิเคชั่นที่ไม่เกี่ยวข้องสองรายการนี้อยู่ในโฟลเดอร์แยกต่างหากภายในโฟลเดอร์ FTP ของรูท บางทีแอปพลิเคชันของฉันกำลังมองหาตัวควบคุม MVC ทุกที่ที่ทำได้และเข้าถึงได้ดังนั้นจึงเกิดขึ้นกับตัวควบคุมหน้าแรก ฉันจะบอกให้ไม่ดูที่ใดก็ได้ แต่เป็นโฟลเดอร์ Controller ของตัวเองและไม่สนใจส่วนที่เหลือ
เฉพาะชาวโบลิเวียที่นี่

2
@SergioTapia ดูเหมือนว่าพวกเขาจะเกี่ยวข้องกับแอปพลิเคชันของคุณค่อนข้างสวย ผู้ให้บริการโฮสต์ของคุณวางไว้ในแอปพลิเคชัน ASP.NET เดียวกัน คุณจะต้องขอให้เขาแยกพวกเขาใน IIS เป็นกรณีแยกต่างหากหรือคุณจะมีปัญหามากมาย
ดารินทินดิมิทรอฟ

13
ขอบคุณ ใน ASP MVC 4.0 คุณจะต้องผ่านการโต้แย้งชื่อเช่น namespaces: ใหม่ [] {"AppName.Areas.Admin.Controllers"}
om471987

1
+1 - ทำงานได้ดี ฉันไม่ทราบว่ามีพื้นที่แยกต่างหากสำหรับการลงทะเบียนเส้นทางในพื้นที่ ทุกที่ฉันดูเหมือนว่าจะมีคำตอบที่มีคุณภาพจากดารินทร์ :)
เทรวิสเจ

1
หากคุณกำลังใช้พื้นที่และต้องการกำหนดพื้นที่สำหรับควบคุมคุณต้องกำหนดพื้นที่ทั้งสองเส้นทางภายในพื้นที่และภายนอก เฉพาะการกำหนดชื่อเส้นทางในพื้นที่ยังให้ฉันปัญหานี้
Gavin Ward

528

นี่เป็นอีกสถานการณ์หนึ่งที่คุณอาจประสบกับข้อผิดพลาดนี้ ถ้าคุณเปลี่ยนชื่อโครงการของคุณเพื่อให้ชื่อไฟล์ของแอสเซมบลีเปลี่ยนเป็นไปได้ที่คุณจะมีแอสเซมบลี ASP.NET สองเวอร์ชันซึ่งจะทำให้เกิดข้อผิดพลาดนี้อีกครั้ง

วิธีแก้ไขคือไปที่binโฟลเดอร์ของคุณและลบ DLLs เก่า (ฉันลอง "สร้างใหม่โครงการ" แต่ไม่ได้ลบ 'em ดังนั้นโปรดตรวจสอบbinเพื่อให้แน่ใจว่าพวกเขาหายไป)


1
การเปลี่ยนแปลงอื่น ๆ ของข้อผิดพลาดนี้คือเมื่อคุณใช้ resharper และคุณใช้ตัวเลือก refactor "auto" บางตัวที่มีการเปลี่ยนชื่อเนมสเปซ นี่คือสิ่งที่เกิดขึ้นกับฉัน
เซบาสเตียน 506563

5
หากคุณได้รับบริการนี้จาก Azure App Service ให้ไปที่ https: // <your_app_name_here> .scm.azurewebsites.net / DebugConsole เพื่อเข้าสู่ระบบและลบไฟล์
Tom Blodget

5
ขอบคุณนี่เป็นปัญหาสำหรับฉัน ฉันสร้างโครงการ "ใหม่" โดยคัดลอก / วางโครงการที่มีอยู่ลงในโฟลเดอร์ใหม่ รุ่นเก่าสร้างมาพร้อมกับการลบโฟลเดอร์ bin เช็ดมันให้สะอาด
brando

ฉันได้สิ่งนี้เมื่อย้ายไฟล์โครงการของฉันไปยังไดรฟ์ที่สอง การล้างโฟลเดอร์ bin ออกมาจะเป็นการแก้ปัญหา สิ่งที่แปลกที่สุด
Roberto Bonini

นั่นเป็นข้อผิดพลาดที่น่ารำคาญอย่างเจ็บปวดด้วยการแก้ไขที่ง่ายมาก ขอบคุณ!
ทรอย Grosfield

63

ใน MVC4 & MVC5 มันแตกต่างกันเล็กน้อยใช้สิ่งต่อไปนี้

/App_Start/RouteConfig.cs

namespace MyNamespace
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                namespaces:  new[] {"MyNamespace.Controllers"}
            );
        }
    }
}

และในพื้นที่

context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional },
                new[] { "MyNamespace.Areas.Admin.Controllers" }
            );

39

ดูสิ่งนี้ ... http://www.asp.net/mvc/videos/mvc-2/how-do-i/aspnet-mvc-2-areas

จากนั้นรูปนี้ (หวังว่าคุณจะชอบภาพวาดของฉัน)

ป้อนคำอธิบายรูปภาพที่นี่


แก้ไขปัญหา .. ! :)
Aruna

1
@ppumkin บอกกับโปรแกรมเมอร์ตาบอด ข้อความสามารถอ่านได้จากโปรแกรมอ่านหน้าจอ
Carlos Muñoz

สวัสดีคาร์ลอส ใช่ฉันเข้าใจสถานการณ์ มันยากแล้วที่จะอธิบายให้ผู้คนฟัง ฉันไม่แน่ใจด้วยซ้ำว่าซอฟต์แวร์ช่วยเหลือประเภทใดจะสามารถอธิบายสิ่งที่เกิดขึ้นในภาพกับร่างกายได้ดี มันทำให้เกิดความสนใจว่าคำตอบอาจมีข้อความอย่างน้อยพยายามอธิบายสิ่งที่เกิดขึ้น
Piotr Kula

32

สิ่งที่คนอื่นพูดถูกต้อง แต่สำหรับผู้ที่ยังคงประสบปัญหาเดียวกัน:
ในกรณีของฉันมันเกิดขึ้นเพราะฉันคัดลอกอีกโครงการ n เปลี่ยนชื่อมันเป็นอย่างอื่นแต่ไฟล์ที่ส่งออกก่อนหน้านี้ในbinโฟลเดอร์ยังคงมี ... และน่าเสียดายBuild -> Clean Solutionหลังจากกดปุ่มเปลี่ยนชื่อ โปรเจ็กต์และมันNamespaces ไม่ได้ลบออก ... ดังนั้นการลบพวกเขาด้วยตนเองแก้ไขปัญหาของฉัน!


2
ข้อเสนอแนะของคุณช่วยฉัน
Abhimanyu

1
ฉันก็เช่นกันขอบคุณสะอาด dosnt จริง ๆ แล้วหมายถึงสะอาด grrrr
katibaer

1
ขอบคุณ @DrTJ นี่มันช่างน่ารำคาญเหลือเกิน! คุณคาดหวังว่ากระบวนการทำความสะอาดด้วยสีแดงในการทำงานและความคาดหวังเป็นสาเหตุของความล้มเหลว สิ่งนี้ช่วยฉันดึงผมออกไปอีก!
Mike

28

ในbin/โฟลเดอร์โครงการของคุณ

ตรวจสอบให้แน่ใจว่าคุณมีเพียงPROJECT_PACKAGENAME.DLLของคุณ

และลบANOTHER_PROJECT_PACKAGENAME.DLL

ที่อาจปรากฏที่นี่โดยไม่ได้ตั้งใจหรือคุณเพียงแค่เปลี่ยนชื่อโครงการของคุณ


2
ปัญหาของฉันแน่นอน ขอบคุณ.
Detilium

ทำงานให้ฉัน! thnks!
eyal

ฉันเปลี่ยนชื่อชุดประกอบและมี DLLs เก่าบางตัวนั่งอยู่ในถัง ขอบคุณ
apc

ขอบคุณ! ฉันไม่อยากจะเชื่อว่าฉันคิดถึงบางสิ่งที่ง่ายมาก
Vash

25

ตรวจสอบโฟลเดอร์binหากมีไฟล์ dll อีกไฟล์หนึ่งที่อาจขัดแย้งกับคลาส homeController


7
บิตนี้เมื่อฉันคัดลอกโครงการและเปลี่ยนชื่อ ... โครงการเก่าชื่อ dll ยังอยู่ในถังขยะการล้างข้อมูลไม่ได้ลบ ... ฉันต้องลบมันด้วยตัวเอง!
Paul Zahra

2
นี่เป็นปัญหาสำหรับฉัน เพื่อนร่วมงานที่เพิ่มโดยการอ้างอิงจากโครงการส่วนหน้าหนึ่งไปยังโครงการอื่นที่สร้างปัญหานี้ผิดพลาด เขาลบการอ้างอิงดังนั้น Visual Studio จึงลบไฟล์ dll บนดิสก์ของเขาด้วย ฉันดึงการอัปเดตจาก Git การอ้างอิงหายไป แต่ไฟล์ dll ยังคงอยู่หลังจากนั้นก็ทำความสะอาด เพียงเพราะ VS ของฉันไม่เห็นการอ้างอิงอีกต่อไป แต่เมื่อเรียกใช้ IIS จะเห็นไฟล์และใช้งาน การลบออกจากดิสก์ของฉันช่วย
Yeronimo

14

โซลูชันอื่นคือการลงทะเบียนเนมสเปซเริ่มต้นด้วย ControllerBuilder เนื่องจากเรามีเส้นทางจำนวนมากในแอปพลิเคชันหลักของเราและมีเส้นทางทั่วไปเพียงเส้นทางเดียวในพื้นที่ของเรา (ซึ่งเราระบุชื่อ namespace แล้ว) เราจึงพบว่านี่เป็นวิธีที่ง่ายที่สุด:

ControllerBuilder.Current
     .DefaultNamespaces.Add("YourApp.Controllers");

นี่เป็นกรณีสำหรับฉัน หากคุณมีตัวควบคุมหลายตัวที่มีชื่อเดียวกันอาจจำเป็นต้องใช้หลังจากที่คุณเพิ่มเนมสเปซให้กับคำจำกัดความเส้นทางของคุณ ตัวอย่างเช่นสำหรับหน้าแรกของคุณที่เส้นทางและพื้นที่ควบคุมไม่ได้ถูกเลือกอย่างชัดเจน
Jason Beck

ในโครงการที่ฉันทำงานเรามี BackOffice แบบเบ็ดเสร็จหลักพร้อมพื้นที่สำหรับงานลูกค้าที่กำหนดเอง แต่ละคนมีตัวควบคุม 'การตั้งค่า' คำตอบนี้เป็นทางเลือกที่ยอดเยี่ยมในการกำหนดเส้นทางสำหรับคอนโทรลเลอร์การตั้งค่าสำหรับแต่ละพื้นที่
Derreck Dean

7

แม้ว่าคุณจะไม่ได้ใช้พื้นที่คุณยังสามารถระบุใน RouteMap ของคุณว่าควรใช้ namespace ใด

routes.MapRoute(
    "Default",
    "{controller}/{action}",
    new { controller = "Home", action = "Index" },
    new[] { "NameSpace.OfYour.Controllers" }
);

แต่ดูเหมือนว่าปัญหาที่แท้จริงคือวิธีการตั้งค่าแอพทั้งสองของคุณใน IIS


7

ฉันเพิ่งมีปัญหานี้ แต่เมื่อฉันเผยแพร่ไปยังเว็บไซต์ของฉันในการแก้ปัญหาในท้องถิ่นของฉันมันก็ทำงานได้ดี ฉันพบว่าฉันต้องใช้ FTP จากเว็บโฮสติ้งของฉันและไปที่เผยแพร่ของฉันและลบไฟล์ในโฟลเดอร์ BIN การลบมันในเครื่องไม่ได้ทำอะไรเลยเมื่อฉันเผยแพร่


นี่คือการแก้ไขสำหรับฉัน โปรไฟล์เผยแพร่ของฉันไม่ได้ลบไฟล์ที่ไม่ได้อยู่ในเครื่องดังนั้นแอปของฉันจึงรับ DLLs เก่าเพิ่มเติมจากไฟล์ใหม่และพบประเภทที่ซ้ำกัน
แบบฟอร์ม

1
ฉันเปลี่ยนชื่อโปรเจคและหักเหไฟล์ทั้งหมด แต่แล้วฉันก็พบข้อผิดพลาดนี้ การลบโฟลเดอร์ bin ก็ทำงานได้เช่นกัน
Mauro Valvano

6

อาจมีอีกกรณีหนึ่งกับพื้นที่แม้ว่าคุณจะทำตามขั้นตอนทั้งหมดในการกำหนดเส้นทางในพื้นที่ (เช่นให้ Namespaces ในตารางเส้นทางทั่วโลก) ซึ่งก็คือ:

คุณอาจไม่ได้รวม Global Controller ของคุณไว้ใน 'namespace' ที่คุณระบุไว้ในการกำหนดเส้นทาง

เช่น:

ทำสิ่งนี้:

public class HomeController : Controller
{

แทน:

namespace GivenNamespace.Controllers
{
   public class HomeController : Controller
   {

ใช่มันไม่พอเพียงให้เนมสเปซใน MapRoute เนมสเปซที่ให้ไว้ที่นี่จำเป็นต้องตรงกับเนมสเปซของคลาสคอนโทรลเลอร์อยู่ในขณะนี้ใช้งานได้!
DanKodi

6

คุณยังสามารถได้รับข้อผิดพลาด 500 ถ้าคุณเพิ่มแอสเซมบลีของคุณเองที่ประกอบด้วย ApiController โดยแทนที่ GetAssemblies ของ DefaultAssembliesResolver และอยู่ในอาร์เรย์จาก base.GetAssemblies ()

กรณีในจุด:

public class MyAssembliesResolver : DefaultAssembliesResolver
{
    public override ICollection<Assembly> GetAssemblies()
    {
        var baseAssemblies = base.GetAssemblies();

        var assemblies = new List<Assembly>(baseAssemblies);

        assemblies.Add(Assembly.GetAssembly(typeof(MyAssembliesResolver)));

        return new List<Assembly>(assemblies);
    }
}

หากรหัสข้างต้นอยู่ในแอสเซมบลีเดียวกับคอนโทรลเลอร์ของคุณแอสเซมบลีนั้นจะอยู่ในรายการสองครั้งและจะสร้างข้อผิดพลาด 500 เนื่องจาก Web API ไม่ทราบว่าจะใช้อันไหน


6

หากคุณต้องการแก้ไขโดยอัตโนมัติ .. คุณสามารถใช้แอปพลิเคชัน assambly เพียงเพิ่มรหัสต่อไปนี้:

 routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new[] { string.Format("{0}.Controllers", BuildManager.GetGlobalAsaxType().BaseType.Assembly.GetName().Name) }
        );

1
ทางออกที่ยอดเยี่ยมหากคุณมีผู้ควบคุมเดียวกันในหลายโครงการ
Ravi Anand

4

มีปัญหาเดียวกันและไม่มีอะไรช่วย ปัญหาคือว่าที่จริงผมมีไม่ซ้ำกันใด ๆ ข้อผิดพลาดนี้จะปรากฏขึ้นหลังจากเปลี่ยน namespace โครงการจากไปMyCuteProjectMyCuteProject.Web

ในที่สุดฉันก็ตระหนักว่าแหล่งที่มาของข้อผิดพลาดเป็นglobal.asaxไฟล์ - มาร์กอัป XML ไม่ใช่.cs-codebehind ตรวจสอบ namespace ในนั้น - นั่นช่วยฉัน


2

ฉันเพิ่งลบโฟลเดอร์ 'ถังขยะ' จากเซิร์ฟเวอร์และคัดลอกถังขยะของฉันไปยังเซิร์ฟเวอร์และแก้ไขปัญหาของฉันแล้ว



1

เราพบว่าเราได้รับข้อผิดพลาดนี้เมื่อมีข้อขัดแย้งในโครงสร้างของเราซึ่งปรากฏเป็นคำเตือน

เราไม่ได้รับรายละเอียดจนกว่าเราจะเพิ่ม Visual Studio -> เครื่องมือ -> ตัวเลือก -> โครงการและโซลูชั่น -> Build and Run -> MSBuild โปรเจ็กต์การสร้างผลลัพธ์ verbosity เป็นละเอียด

โครงการของเราเป็น. net v4 เว็บแอปพลิเคชันและมีข้อขัดแย้งระหว่าง System.Net.Http (v2.0.0.0) และ System.Net.Http (v4.0.0.0) โครงการของเราอ้างถึงเวอร์ชัน v2 ของไฟล์จากแพ็คเกจ (รวมอยู่ในการใช้ nuget) เมื่อเราลบการอ้างอิงและเพิ่มการอ้างอิงไปยังเวอร์ชั่น v4 แล้วบิลด์ก็ใช้งานได้ (โดยไม่มีคำเตือน) และข้อผิดพลาดนั้นได้รับการแก้ไข


1

การเปลี่ยนแปลงอื่น ๆ ของข้อผิดพลาดนี้คือเมื่อคุณใช้ resharper และคุณใช้ตัวเลือก refactor "auto" บางตัวที่มีการเปลี่ยนชื่อเนมสเปซ นี่คือสิ่งที่เกิดขึ้นกับฉัน เพื่อแก้ไขปัญหาของโฟลเดอร์ลบภาพจำลองประเภทนี้bin


สิ่งนี้เกิดขึ้นกับฉันเมื่อฉันคัดลอกไปยังเนื้อหาของโครงการ 1 เหนือเนื้อหาของอีกโครงการหนึ่ง ฉันต้องลบไฟล์เฉพาะจากโฟลเดอร์ bin
Adriaan Davel

1

คลิกขวาที่โครงการและเลือกล้างโครงการ หรือมิฉะนั้นจะทำให้ไดเรกทอรี bin ว่างเปล่าแล้วจึงสร้างใหม่อีกครั้ง สิ่งนี้ควรล้างสิ่งที่หลงเหลืออยู่ในชุดประกอบจากงานสร้างก่อนหน้านี้


1

บางครั้งในแอปพลิเคชันเดียวปัญหานี้ก็เกิดขึ้นในกรณีนั้นให้เลือกช่องทำเครื่องหมายเหล่านี้เมื่อคุณเผยแพร่แอปพลิเคชันของคุณ ป้อนคำอธิบายรูปภาพที่นี่


1

ถ้ามันสามารถช่วยคนอื่นได้ฉันก็เจอกับข้อผิดพลาดนี้เช่นกัน ปัญหาเกิดจากการอ้างอิงที่ไม่ถูกต้องในเว็บไซต์ของฉัน ไม่ทราบสาเหตุที่เว็บไซต์ของฉันอ้างถึงเว็บไซต์อื่นในโซลูชันเดียวกัน และเมื่อฉันลบการอ้างอิงที่ไม่ดีออกไปสิ่งต่างๆก็เริ่มทำงานอย่างถูกต้อง


0

หากคุณทำงานใน Episerver หรือ CMS อื่นที่ใช้ MVC คุณอาจพบว่าชื่อคอนโทรลเลอร์นั้นได้รับการอ้างสิทธิ์แล้ว

FileUploadเรื่องนี้เกิดขึ้นกับฉันเมื่อพยายามที่จะสร้างตัวควบคุมที่เรียกว่า


0

ฉันกำลังเผชิญกับปัญหาที่คล้ายกัน และเหตุผลหลักคือฉันมีคอนโทรลเลอร์เดียวกันในสองส่วนที่ต่างกัน เมื่อฉันลบหนึ่งในนั้นทำงานได้ดี

ฉันมีมันจะเป็นประโยชน์สำหรับคุณ

โซลูชันโครงการ


0

ฉันมีสองโครงการในโซลูชันเดียวที่มีชื่อคอนโทรลเลอร์เหมือนกัน ฉันลบการอ้างอิงโครงการที่สองในโครงการแรกและมีการแก้ไขปัญหา


0

ฉันพบข้อผิดพลาดนี้สามารถเกิดขึ้นได้กับเว็บไซต์ ASP.NET แบบดั้งเดิมเมื่อคุณสร้างตัวควบคุมในไดเรกทอรี App_Code ที่ไม่ใช่ (บางครั้ง Visual Studio ป้องกันสิ่งนี้)

มันตั้งประเภทไฟล์เป็น "รวบรวม" ในขณะที่รหัสใด ๆ ที่เพิ่มให้กับ "App_Code" ถูกตั้งค่าเป็น "เนื้อหา" หากคุณคัดลอกหรือย้ายไฟล์ไปที่ App_Code จะยังคงตั้งเป็น "รวบรวม"

ฉันสงสัยว่ามันมีบางอย่างเกี่ยวกับการดำเนินการโครงการเว็บไซต์เนื่องจากโครงการเว็บไซต์ไม่มีการสร้างใด ๆ การล้างโฟลเดอร์ bin และการเปลี่ยนเป็น "เนื้อหา" ดูเหมือนจะแก้ไขได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.