Я пытаюсь настроить контроллер маршрутизации для перехвата запросов на получение определенных файлов, когда браузер кэширует их при запуске приложения. Я могу увидеть запрос в консоли:
Событие выполнения кэша приложений (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
. Еще одна проблема.
Предполагая, что ваш маршрут определен как
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();
}
GetReport
действияGetReport
не принимает никаких параметров ... как должен передаваться{report}
с вашего маршрута?