Multiple types were found that match the controller

06 Kasım 2015 1 dk okuma süresi 55 okunma

Öncelikli olarak eğer MVC'de area mantığını kullanmıyor ve klasör içerinde tutuyorsanız hemen bundan vazgeçin. Klasörü silin ve bir area oluşturun.

MVC Area nedir?
Kendi içerisinde yapılandırılmış alt alanlara (proje de denillebilir) area denir. Bir nevi sistemi alt parçalara ayırmadır ve klasör mantığından çok daha ötesidir. Daha fazla bilgi almak için ilgili linke tıklayın. https://docs.asp.net/en/latest/mvc/controllers/areas.html#areas

Şimdi gelelim hatanın çözümüne. Bu hatadan kurtulmanın 2 adımı var.

  • 1. adımda global.asax Application_Start metoduna aşağıdaki kodu ekliyoruz.
ControllerBuilder.Current.DefaultNamespaces.Add("ProjectName.Controllers");
  • 2. adım olarak da oluşturduğunuz area klasörü içerinde bulunan AreaRegistration.cs (area adı ile ilişkilidir, yani admin şeklinde bir area oluşturduysanız AdminAreaRegistration.cs olur) class'ına aşağıdaki kodu ekliyoruz ve projeyi build ediyoruz.
context.MapRoute( "AreaAdi_default", "AreaAdi/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional }, new string[] { "ProjeAdi.Areas.AreaAdi.Controllers" } );

// Benim area'mın adının admin olduğunu varsayarsak kod aşağıdaki gibi olmalı.
</span>context.MapRoute( "admin_default", "Admin/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional }, new string[] { "ProjeAdi.Areas.Admin.Controllers" } );<span></span>
Yazılarıma abone olmak ister misiniz?
Spam yapılmaz, sadece bildirim amaçlıdır. İstediğiniz zaman abonelikten çıkabilirsiniz.
İlginizi çekebilecek diğer yazılar.
Dotnet Core ile gelen requestin ajax olup olmadığını anlamamıza yarayan attribute

Webapi "Get exception Method not found: 'System.Collections.ObjectModel.Collection`1 System.Web.Http.HttpConfiguration.get_MessageHandlers()'" sorunu nasıl giderilir?

Önceki sürümlerde projeye çift tıkladığımızda ağaç yapısı şeklinde kırılımları açarken VS2019 ile birlikte otomatik olarak proje dosyasını açıyor. Neyseki bu alışkanlığı devam ettirebilmek için seçenek koymuşlar.