MVC контроллер не стреляет

1

Я пытаюсь настроить контроллер маршрутизации для перехвата запросов на получение определенных файлов, когда браузер кэширует их при запуске приложения. Я могу увидеть запрос в консоли:

Событие выполнения кэша приложений (275 из 472) http://mywebsite.com/Path/Whatever/App/Views/SubFolder/Reports/SomeProposal.html

У меня есть мой Global.asax настроенный для вызова RouteConfig.RegisterRoutes (скорее всего, это код OOTB):

protected void Application_Start()
{
    using (StreamWriter sw = System.IO.File.AppendText(@"C:\Users\tory.waterman\Desktop\app.txt"))
    {
        sw.WriteLine("app start fired at " + DateTime.Now.ToString());
    }
    AreaRegistration.RegisterAllAreas();
    WebApiConfig.Register(GlobalConfiguration.Configuration);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

Я подтвердил, что это действительно работает и регистрирует мой маршрут (я пишу в текстовый файл с меткой времени):

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

    routes.MapRoute(
        name: "Reports",
        url: "Path/Whatever/App/Views/SubFolder/Reports/{report}",
        defaults: new
        {
            controller = "Reports",
            action = "GetReport"
        }
    );
}

(некоторые биты пути были изменены явно)

У меня есть контроллер с именем ReportsController с GetReport() который я ожидаю получить:

public ActionResult GetReport(string report)
{
    return View();
}

Но он никогда не вызывал (я пишу в текстовый файл, такой как Global.asax и RouteConfig, но это никогда не происходит).

Любые идеи, как я могу получить эту работу или что я делаю неправильно?

EDIT 1: добавлен параметр string report о GetReport в GetReport. Еще одна проблема.

  • 0
    Скорее всего, порядок ваших маршрутов неверен. Пожалуйста, покажите весь свой код MapRoutes.
  • 0
    GetReport действия GetReport не принимает никаких параметров ... как должен передаваться {report} с вашего маршрута?
Показать ещё 12 комментариев
Теги:
asp.net-mvc
routes

1 ответ

2

Предполагая, что ваш маршрут определен как

routes.MapRoute(
    name: "Reports",
    url: "Path/Whatever/App/Views/SubFolder/Reports/{report}", //with route param
    defaults: new
    {
        controller = "Reports",
        action = "GetReport"
    }
);

Для вашей сигнатуры метода действия требуется параметр report иначе маршрут не будет соответствовать:

public ActionResult GetReport(string report)
{
    return View();
}
  • 0
    Не повезло. обновленный вопрос, хотя с текущим кодом

Ещё вопросы

Сообщество Overcoder
Наверх
Меню