Я пытаюсь переместить следующее правило перезаписи IIS в ASP. NET Запуск Core 3.1. Однако, когда я это делаю, я получаю «System.FormatException:» Нераспознанный тип параметра: «PATH_INFO», завершается строковым индексом: исключение «10». Согласно Gitub issue , PATH_INFO не поддерживается еще. Есть ли способ заставить это работать без PATH_INFO? Правило перезаписи IIS:
<rewrite>
<rules>
<rule name="CamelCaseFormatRule" stopProcessing="true">
<match url=".*" ignoreCase="true" />
<action type="Redirect" url="/InstructionManual/{R:0}" logRewrittenUrl="true" />
<conditions>
<add input="{HTTP_HOST}" pattern="^localhost$" />
<add input="{PATH_INFO}" pattern="InstructionManual" ignoreCase="false" negate="true" />
</conditions>
</rule>
</rules>
</rewrite>
Я поместил это в файл XML в root своего приложения и вызвал его в Startup например:
app.UseRewriter (new RewriteOptions (). AddIISUrlRewrite (env.ContentRootFileProvider, "redirectRule.config"));
Это правило проверяет, есть ли в запросе виртуальный каталог ящика верблюда имя (например, InstructionManual). Если нет, восстановите URL-адрес в правильный формат и выполните перенаправление.
Это правило работает нормально, когда я использую модуль IIS. Вот несколько примеров:
http://localhost/InstructionManual/?id=54 --> http://localhost/InstructionManual/?id=54
http://localhost/instructionmanual/?id=54 --> http://localhost/InstructionManual/?id=54
http://localhost/insTructionManuaL/?id=54 --> http://localhost/InstructionManual/?id=54