Имя контроллера конфликтует с папками в проекте решения - PullRequest
0 голосов
/ 30 апреля 2019

Я создал контроллер с именем «Services», который работает нормально, за исключением того, что действие по умолчанию не работает.Более конкретно, когда я пытаюсь достичь .../Services, я получаю

HTTP Ошибка 403.14 - Запрещена

ошибка, но .../Services/Index работает.Все остальные контроллеры работают нормально.Что я делаю не так или есть какие-то зарезервированные маршруты или что-то в этом роде?Я удалил «IgnoreRoute» в RouteConfig, но все еще не работает.

Это код контроллера:

public class ServicesController : Controller
{
    private ApplicationDbContext db = new ApplicationDbContext();

    // GET: Services
    public ActionResult Index(int CategoryId = -1)
    {
        if (CategoryId == -1)
        {
            var services = db.Services.Include(s => s.ServiceCategory).Include( i => i.Images);
            return View(services.ToList());
        }
        else
        {
            var services = db.Services.Where(r => r.ServiceCategoryId == CategoryId).Include(p => p.ServiceCategory).Include(i => i.Images);
            return View(services.ToList());
        }
    }
}

И конфигурация маршрута:

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 }
        );
    }
}

Редактировать: Я нашел причину, у меня есть папка с именем "Services" внутри решения проекта.Но я думаю, что это поведение неприемлемо, поэтому мой вопрос, каково решение для этого?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Вы должны изменить виртуальный каталог в проекте

как это https://i.stack.imgur.com/1IQXV.png

0 голосов
/ 30 апреля 2019

Все, что вам нужно, чтобы установить RouteExistingFiles в true в RouteConfig классе.

routes.RouteExistingFiles = true;

Самый простой способ - переименовать папку во что-то другое, чтобы избежать этого конфликта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...