Я использую 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.