Saya mengalami kesalahan berikut ini dengan proyek ASP.NET MVC 3 saya:
Beberapa jenis ditemukan yang cocok dengan pengontrol bernama 'Rumah'. Ini bisa terjadi jika rute yang melayani permintaan ini ('Home / {action} / {id}') tidak menentukan namespace untuk mencari pengontrol yang cocok dengan permintaan tersebut. Jika demikian, daftarkan rute ini dengan memanggil metode 'MapRoute' yang kelebihan beban yang mengambil parameter 'ruang nama'.
Permintaan untuk 'Home' telah menemukan pengontrol yang cocok berikut ini: MyCompany.MyProject.WebMvc.Controllers.HomeController MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController
Saya memiliki HomeController di folder kontroler default saya, dengan nama kelas MyCompany.MyProject.WebMvc.Controllers.HomeController.
Metode RegisterRoutes saya, di global.asax saya, terlihat seperti:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
Saya kemudian memiliki area bernama Perusahaan, dengan HomeController di folder pengontrol default untuk area tersebut, dengan nama kelas MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController.
Metode RegisterArea di file CompanyAreaRegistration terlihat seperti:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Company_default",
"Company/{controller}/{action}/{id}",
new { area = "Company", action = "Index", id = UrlParameter.Optional }
);
}
Ini semua memimpin kesalahan yang saya soroti di awal posting ini. Saya berjuang mencoba mengumpulkan solusi dari berbagai posting lain, dengan NO LUCK .
Apakah mungkin untuk memiliki HomeController di folder pengontrol default dan kemudian satu di area SETIAP? Jika demikian, apakah saya perlu melakukan (dengan asumsi saya melakukannya) perubahan pada file konfigurasi saya agar ini berfungsi?
Bantuan apa pun akan sangat dihargai!
sumber
Jawaban:
Pesan kesalahan berisi solusi yang disarankan: "Jika ini kasusnya, daftarkan rute ini dengan memanggil metode 'MapRoute' yang kelebihan muatan yang mengambil parameter 'ruang nama'."
Ini akan membuat http: // server / pergi ke tindakan Indeks HomeController Anda, yang menurut saya, adalah yang Anda inginkan. http: // server / perusahaan / rumah akan masuk ke tindakan Indeks HomeController area Perusahaan, sebagaimana ditentukan dalam pendaftaran area.
sumber
namespaces
parameternya adalah array string, jadi Anda harus dapat meneruskan nomor apa pun dengan menambahkan ke array:new string[] { "MyCompany.MyProject.WebMvc.Controllers", "My.Second.Namespace", "My.Third.Namespace", "Namespaces.Etc" }
MyProject.Controllers
lakukan bagaimanapun.MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController
kelas ini sedang dieksekusi. Namun Tampilan yang muncul adalah yang lama.Ini adalah pendekatan mvc4 asp.net:
sumber
Saya telah mengganti nama namespace, jadi, saya hanya menghapus de folder bin dan obj dan membangun kembali , bekerja lagi.
sumber
Penyebab masuk akal lain dari masalah ini dapat ditemukan di bawah ini:
Beberapa jenis ditemukan yang cocok dengan pengontrol bernama 'Rumah'
sumber
Gunakan ini
sumber
Gunakan hanya nama proyek:
sumber
Jika Anda menggunakan RazorGenerator, memberi tahu
namespaces
parameter saja tidak cukup.Saya harus menyelesaikan menambahkan pernyataan yang ditandai di bawah ini di
Global.asax.cs
:sumber
Seperti yang dikatakan Chris Moschini, parameter namespaces mungkin tidak cukup jika Anda memiliki dua area dengan nama pengontrol yang sama dengan namespace yang berbeda dan rute default area tidak ada akan mengembalikan kesalahan server 500.
Itu "terbaik" untuk mengganti pengendali rute default dan menambahkan baris ini:
sumber
Saya mengalami masalah ini setelah saya menambahkan referensi ke proyek lain yang memiliki rute yang sama dan masalah berlanjut setelah saya menghapus referensi tersebut.
Diatasi dengan menghapus file .dll dari referensi yang ditambahkan itu dari folder bin dan membangunnya kembali.
sumber
Seperti banyak orang lain, saya mengalami masalah ini setelah membuat proyek template MVC baru dari menu VS2017, saat membangun proyek saya akan mendapatkan pesan kesalahan operasi. Saya kemudian menggunakan jawaban https://stackoverflow.com/a/15651619/2417292 yang diposting sebelumnya di utas ini dengan cooloverride untuk proyek mvc4. Ini masih tidak memperbaiki masalah saya, jadi saya mengganti nama folder tampilan Beranda dan file HomeController saya menjadi folder tampilan Perusahaan / dan file pengontrol CompanyController. Ini kemudian bekerja untuk saya, bukan perbaikan per kata tetapi solusi jika Anda tidak terjebak memiliki rute Beranda / Indeks masalah saya yang lain adalah saya tidak dapat menemukan referensi yang menyebabkan kesalahan dan karena platform dev saya adalah Azure WebApplication vs a VM penuh dengan sistem file lengkap dan pengaturan IIS untuk dipusingkan.
sumber
Saya mengalami masalah yang sama dan menemukan bahwa versi yang lebih lama telah membuat file yang dikompilasi di folder "bin".
Setelah saya menghapus ini, kesalahan tersebut menghilang.
sumber