Я реализовал пользовательский VirtualPathProvider для обслуживания настраиваемых представлений из БД, и когда я поставил точку останова на метод FileExists, я заметил, что инфраструктура выполняет множество ненужных (для моего проекта) запросов.Например, когда я делаю запрос на несуществующее действие (например, http://localhost/Example/Action), фреймворк ищет:
- "~ / Example / Action / 5"
- "~ / Example / Action / 5.cshtml "
- " ~ / Example / Action / 5.vbhtml "
- " ~ / Example / Action.cshtml "
- " ~/Example/Action.vbhtml"
- "~ / Example.cshtml"
- "~ / Example.vbhtml"
- "~ / Example / Action / 5 / default.cshtml "
- " ~ / Example / Action / 5 / default.vbhtml "
- " ~ / Example / Action / 5 / index.cshtml "
- " ~ / Example/Action/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"
- "~ / Test.cshtml"
- "~ / Test.vbhtml "
- " ~ / Test / default.cshtml "
- " ~ / Test / default.vbhtml "
- " ~ / Test / index.cshtml "
- "~ / Test / 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" };
Так что вопрос в том, можно ли удалить эти маршруты по умолчанию и как?