Когда я думаю о «компиляции», я думаю о превращении кода C ++ в двоичный файл. Или, возможно, C # в байт-код CLR. Но «синтаксический анализ» может быть чем-то вроде синтаксического анализа Python или языка веб-шаблонов, при котором не требуется создавать какие-либо двоичные файлы, но он может либо выполнять код немедленно, оператор за оператором, либо напрямую выводить HTML.
Вы бы в любом случае выполняли одну и ту же задачу? Игнорируя синтаксис языка, Даже если URL-адрес не соответствует реальной папке файловой системы, IIS отклоняет URL-адрес с сегментом пути, равным одному из упомянутых имен.
Это означает, что у меня не может быть маршрута, подобного этому:
{controller}/{action}/{id}
... где id может быть любой строкой, например.
Catalog/Product/Bin
Итак, вместо отключения этой меры безопасности я хочу изменить маршрут, используя суффикс перед идентификатором, например:
{controller}/{action}_{id} // e.g. Catalog/Product_Bin
{controller}/{action}/_{id} // e.g. Catalog/Product/_Bin
Но эти маршруты не будут работать, если идентификатор содержит новый разделитель, _ в данном случае, например
// These URL won't work (I get 404 response)
Catalog/Product_Bin_
Catalog/Product/_Bin_
Catalog/Product/__Bin
Почему? Не знаю, мне кажется, это ошибка. Как я могу заставить эти маршруты работать, где id может быть любой строкой?