Przepisywanie adresów URL i IIS Express: niektóre reguły działają, inne nie

Używam IIS Express do opracowania aplikacji MVC 3, która przepisuje adresy URL w pliku web.config. Natknąłem się na dziwną sytuację, w której niektóre zasady działają doskonale, a inne zawodzą.

Na przykład ten działa:

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

(źródło: https://stackoverflow.com/a/8089525/88709)

Ten nie robi (podaje Unrecognized attribute 'url' w drugiej linii):

<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>

(źródło: http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx)

Zgodnie z Przedstawiamy IIS Express, autorstwa ScottGu, IIS Express umożliwia pełny zestaw funkcji serwera WWW – w tym SSL, Przepisywanie adresów URL, obsługę multimediów i wszystkie inne moduły IIS 7.x.

Byłem skłonny wierzyć, że być może moduł przepisywania adresów URL dostarczany z IIS Express to wersja 1.0, a nie 2.0. Zainstalowałem więc moduł przepisywania adresów URL 2.0, ale nadal pojawia się ten sam błąd.

Czy ktoś ma pojęcie dlaczego tak się dzieje? Jeśli ma to znaczenie, moja konfiguracja to Visual Studio 2010 SP1, IIS Express 7.5.1070, ASP.NET MVC 3.


person Daniel Liuzzi    schedule 06.01.2012    source źródło
comment
działa dobrze na moim IIS Express:s Prawdopodobnie otrzymujesz ten błąd z innego kodu.   -  person tugberk    schedule 06.01.2012
comment
@tugberk Właśnie utworzyłem nowy pusty projekt MVC, zostawiłem wszystko domyślne i dodałem tylko regułę Usuń ukośnik końcowy do pliku web.config. Ten sam błąd. Czy OBU reguł działają na Twoim IIS Express? To jest dziwne. Zaczynam myśleć, że coś jest nie tak z moją konfiguracją...   -  person Daniel Liuzzi    schedule 06.01.2012
comment
Napisałem o tym post na blogu i przetestowałem go w IIS Express: tugberkugurlu.com/archive/ nie może zrozumieć, co może być nie tak: s   -  person tugberk    schedule 06.01.2012


Odpowiedzi (1)


Problem polegał na tym, że umieściłem <rule> w złym węźle; Reguła „Usuń końcowy ukośnik” powinna znajdować się wewnątrz <rules></rules>, ale błędnie umieściłem ją w <outboundRules></outboundRules> (przy okazji, tam znajduje się reguła „Usuń ETag”).

person Daniel Liuzzi    schedule 06.01.2012