Код: Выделить всё
/). Эта структура помогает идентифицировать разные языковые версии контента. Например, URL курса может выглядеть так:
https://localhost:7213/CourseDetails/en/learn-english-in-99-days
Код: Выделить всё
en/learn-english-in-99-daysКод: Выделить всё
prs/learn-farsi-in-30-days
Код: Выделить всё
/Пример проблемы
- В базе данных у меня есть пул, хранящийся как en/learn-english-in-99-days.
- Когда я перехожу по URL-адресу в браузере следующим образом:
Браузер преобразует %2F в косую черту, в результате чего получается следующий URL:
Код: Выделить всё
https://localhost:7213/CourseDetails/en%2Flearn-english-in-99-daysКод: Выделить всё
https://localhost:7213/CourseDetails/en/learn-english-in-99-days - Когда ASP.NET Core обрабатывает запрос, преобразованный URL-адрес (с / вместо %2F) не соответствует пулу, хранящемуся в базе данных. Это вызывает проблемы, например невозможность найти курс и возврат ошибки 404.
- Пользовательское промежуточное ПО: я попытался создать промежуточное ПО, чтобы заменить %2F на / в пути запроса, но это по-прежнему приводило к проблемам, когда браузер отображал декодированный путь с косой чертой.
- < Strong>Ручное кодирование и декодирование: я использовал Uri.UnescapeDataString для декодирования идентификатора в обработчике OnGet на моей странице Razor, но это все еще не решает проблему полностью, поскольку кодирование и декодирование выглядит непоследовательным.
Почему слэш (
Код: Выделить всё
/Среда
- Страницы ASP.NET Core Razor
Локальный запуск с такими URL-адресами, как https://localhost
Подробнее здесь: https://stackoverflow.com/questions/791 ... p-net-core
Мобильная версия