Я реализовал собственный VirtualPathProvider для обслуживания настраиваемых представлений из БД, и когда я поставил точку останова в методе FileExists, я заметил, что фреймворк выполняет массу ненужных (для моего проекта) запросов. Например, когда я делаю запрос на несуществующее действие (например, http://localhost/Example/Action), фреймворк ищет:
- "~/Пример/Действие/5"
- "~/Пример/Действие/5.cshtml"
- "~/Пример/Действие/5.vbhtml"
- "~/Пример/Action.cshtml"
- "~/Пример/Action.vbhtml"
- "~/Пример.cshtml"
- "~/Пример.vbhtml"
- "~/Пример/Действие/5/default.cshtml"
- "~/Пример/Действие/5/default.vbhtml"
- "~/Пример/Действие/5/index.cshtml"
- "~/Пример/Действие/5/index.vbhtml"
- "~/favicon.ico"
- "~/favicon.ico.cshtml"
- "~/favicon.ico.vbhtml"
- "~/favicon.ico/default.cshtml"
- "~/favicon.ico/default.vbhtml"
- "~/favicon.ico/index.cshtml"
- "~/favicon.ico/index.vbhtml"
Когда я делаю запрос, соответствующий добавленному маршруту (например, http://localhost/Test), платформа ищет:
- "~/Тест"
- "~/Test.cshtml"
- "~/Test.vbhtml"
- "~/Test/default.cshtml"
- "~/Тест/по умолчанию.vbhtml"
- "~/Тест/index.cshtml"
- "~/Тест/index.vbhtml"
еще до инициализации контроллера. После инициализации контроллера фреймворк ищет представление, определенное в пользовательском RazorViewEngine, который я реализовал.
Это мой ViewEngine
AreaViewLocationFormats = new string[] { };
AreaMasterLocationFormats = new string[] { };
AreaPartialViewLocationFormats = new string[] { };
MasterLocationFormats = new string[] { };
ViewLocationFormats = new string[] {
"~/Views/Dynamic/{1}/{0}.cshtml",
"~/Views/Dynamic/Shared/{0}.cshtml",
"~/Views/{1}/{0}.cshtml",
"~/Views/Shared/{0}.cshtml"
};
PartialViewLocationFormats = new string[] {
"~/Views/Dynamic/{1}/Partial/{0}.cshtml",
"~/Views/Dynamic/Shared/Partial/{0}.cshtml",
"~/Views/{1}/Partial/{0}.cshtml",
"~/Views/Shared/Partial/{0}.cshtml"
};
FileExtensions = new string[] { "cshtml" };
Итак, вопрос в том, можно ли удалить эти маршруты по умолчанию и как?