#asp.net-core #razor #razor-pages
#asp.net-core #razor #razor-страницы
Вопрос:
У меня есть страница razor MyPage.cshtml
со следующей аннотацией
@page "{id}"
Это есть, поэтому у меня может быть маршрут, который выглядит следующим образом;
/MyPage/Blah
Все это работает.
Когда я вижу такие вещи, как следующее;
/MyPage/Blah/content/somefile.js
это приводит к 404
.
Я бы хотел, чтобы это обрабатывалось файловой системой.
У меня есть следующий файл в;
wwwroot/MyPage/Blah/content/somefile.js
Я использую asp.net ядро 3.1
Ответ №1:
Во-первых, я тестирую код, и я могу работать.
И затем я обнаруживаю, что если я удалю app.UseStaticFiles();
в своем startup.cs.Я могу получить ту же ошибку, что и вы. Таким образом, вы можете проверить, можете ли вы получить доступ к другому файлу в wwwwroot.Если нет, вы можете проверить свой startup.cs и добавить app.UseStaticFiles();
вот так в Configure:
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
Комментарии:
1. Стандартная маршрутизация работает. У меня был перепутанный UseBlazorFrameworkFiles, который мешал статическим файловым маршрутам.
Ответ №2:
У меня нет других маршрутов, которые мешают статическим файловым маршрутам. т. Е. Моей проблемой было использование lazorframeworkfiles.
Хорошо, итак, из коробки asp.net ядро 3.1 перенаправит на мою страницу;
/MyPage
и если у меня есть куча статических файлов в
wwwroot/MyPage/some.js
это тоже приведет к сбою.
Все хорошо.
У меня возникали другие проблемы с маршрутами, когда на моей странице размещалось приложение blazor и были маршруты на стороне клиента, не связанные с файлами.
Чтобы убедиться, что маршруты правильно обрабатываются во всех этих случаях, мне пришлось добавить следующее на мою страницу razor.
@page "{id}/{*path:nonfile}"
Итак, когда я получил обновление всей страницы для
/MyPage/MyBlazorApp/counter
Теперь моя страница обрабатывает /MyPage/MyBlazorApp
часть, а остальная часть передается клиентскому приложению blazor, чтобы окончательно перейти к маршруту на стороне клиента: /MyPage/MyBlazorApp/counter