Я использую 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. х модулей.
Я был склонен полагать, что, возможно, модуль перезаписи URL, который поставляется с IIS Express, является версией 1.0, а не 2.0. Поэтому я установил URL Rewrite Module 2.0 , но я все еще получаю ту же ошибку.
Кто-нибудь знает, почему это происходит? На случай, если это имеет значение, у меня установлена Visual Studio 2010 SP1, IIS Express 7.5.1070, ASP.NET MVC 3.