URL Rewrite и IIS Express: некоторые правила работают, некоторые нет

Я использую IIS Express для разработки приложения MVC 3, которое выполняет некоторую перезапись URL-адресов в web.config. Я столкнулся с некоторой странностью, когда одни правила работают идеально, а другие - нет.

Например, это работает:

<rule name="Remove ETag">
 <match serverVariable="RESPONSE_ETag" pattern=".+" />
 <action type="Rewrite" value="" />
</rule>

(источник: https://stackoverflow.com/a/8089525/88709)

У этого нет (во второй строке отображается Unrecognized attribute 'url'):

<rule name="Remove trailing slash" stopProcessing="true">
  <match url="(.*)/$" />
  <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
  </conditions>
  <action type="Redirect" redirectType="Permanent" url="{R:1}" />
</rule>

(источник: http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx)

Согласно Знакомство с IIS Express, от ScottGu, IIS Express обеспечивает полный набор функций веб-сервера, включая SSL, перезапись URL-адресов, поддержку мультимедиа и все другие модули IIS 7.x.

Я был склонен полагать, что, возможно, модуль URL Rewrite, поставляемый с IIS Express, - это версия 1.0, а не 2.0. Итак, я установил модуль перезаписи URL 2.0, но все равно получаю ту же ошибку.

Кто-нибудь знает, почему это происходит? Если это важно, моя установка - Visual Studio 2010 SP1, IIS Express 7.5.1070, ASP.NET MVC 3.


person Daniel Liuzzi    schedule 06.01.2012    source источник
comment
отлично работает на моем IIS Express: s Вероятно, вы получаете эту ошибку из другого кода.   -  person tugberk    schedule 06.01.2012
comment
@tugberk Я только что создал новый пустой проект MVC, оставил все по умолчанию и добавил только правило удаления завершающей косой черты в web.config. Та же ошибка. Обе правила работают на вашем IIS Express? Это странно. Я начинаю думать, что что-то не так с моей настройкой ...   -  person Daniel Liuzzi    schedule 06.01.2012
comment
Я написал об этом сообщение в блоге, и все я тестировал его на IIS Express: tugberkugurlu.com/archive/ не может понять, что может быть не так: s   -  person tugberk    schedule 06.01.2012


Ответы (1)


Проблема заключалась в том, что я поместил <rule> не в тот узел; Правило «Удалить завершающую косую черту» должно находиться внутри <rules></rules>, но я неправильно поместил его в <outboundRules></outboundRules> (что, кстати, относится к правилу «Удалить ETag»).

person Daniel Liuzzi    schedule 06.01.2012