Если файл существует, вернуть файл, если файл не завершится, переписать

Мне нужна помощь, чтобы написать два правила перезаписи URL в IIS7, я пытался в течение последних 3 часов безуспешно.

По сути, у меня есть два следующих правила:

<rule name="Resize Images - Game Thumbnails - Static" stopProcessing="true">
    <match url="^images/c/games/(.+)x(.+)/(.+)$" />
    <conditions logicalGrouping="MatchAny">
        <add input="\mycms\games\images\thumbs\220x150\{R:3}" matchType="IsFile" negate="true" />
    </conditions>
    <action type="Rewrite" url="/mycms/games/images/thumbs/{R:1}x{R:2}/{R:3}" />
</rule>
<rule name="Resize Images - Game Thumbnails - Dynamic" stopProcessing="true">
    <match url="^images/c/games/(.+)x(.+)/(.+)$" />
    <conditions logicalGrouping="MatchAny">
        <add input="\mycms\games\images\thumbs\{R:1}x{R:2}\{R:3}" matchType="IsFile" negate="true" />
    </conditions>
    <action type="Rewrite" url="/controls/makeThumb.aspx?folder=games&amp;image={R:3}&amp;w={R:1}&amp;h={R:2}" />
</rule>

Оба правила работают, если они одни.

например, если я поставил только статическое правило, и изображение существует, то оно возвращает изображение.

если я оставляю только динамическое правило, а изображение не существует, то оно создается.

но почему правила не работают вместе?

1 ответ

Решение

Ну, я нашел проблему, в основном оба эти правила работают:

        <rule name="Resize Images - Game Thumbnails - Static" stopProcessing="true">
            <match url="^images/c/games/(.+)x(.+)/(.+)$" />
            <conditions logicalGrouping="MatchAny">
                <add input="{APPL_PHYSICAL_PATH}mycms\games\images\thumbs\{R:1}x{R:2}\{R:3}" matchType="IsFile" />
            </conditions>
            <action type="Rewrite" url="/mycms/games/images/thumbs/{R:1}x{R:2}/{R:3}" />
        </rule>
        <rule name="Resize Images - Game Thumbnails - Dynamic" stopProcessing="true">
            <match url="^images/c/games/(.+)x(.+)/(.+)$" />
            <conditions logicalGrouping="MatchAny">
                <add input="\mycms\games\images\thumbs\{R:1}x{R:2}\{R:3}" matchType="IsFile" negate="true" />
            </conditions>
            <action type="Rewrite" url="/controls/makeThumb.aspx?folder=games&amp;image={R:3}&amp;w={R:1}&amp;h={R:2}" />
        </rule>

НО!!!! и это большое, но, если вы удалите изображение (для целей тестирования или чего-то еще), правило каким-то образом будет кэшировано, и по какой-то странной причине динамическое правило не будет выполнено. единственный способ заставить его выполнить, это перезапустить пул приложений.

Другие вопросы по тегам