2012-01-06 14 views
3

IIS Expressを使用して、web.configでURL書き換えを行っているMVC 3アプリケーションを開発しています。私はいくつかのルールが完全に機能し、他のルールは失敗するという奇妙なことに少し戸惑いました。URLリライトとIIS Express:いくつかのルールは機能しますが、一部は機能しません。

例えばこれが機能:

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

(ソース:https://stackoverflow.com/a/8089525/88709

をこの1つは(2行目に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

Introducing IIS Express(ScottGu)は、SSL、URLリライト、メディアサポート、およびその他のすべてのIIS 7.xモジュールを含む完全なWebサーバー機能を有効にします。

IIS Expressに同梱されているURL書き換えモジュールが、2.0ではなく1.0バージョンである可能性があります。だから私はURL Rewrite Module 2.0をインストールしましたが、私はまだ同じエラーが発生します。

これはどうして起こりますか?その場合、セットアップはVisual Studio 2010 SP1、IIS Express 7.5.1070、ASP.NET MVC 3です。

+0

は、私のIIS Expressで正常に動作します。■おそらく、このエラーが別のコードから発生している可能性があります。 – tugberk

+0

@tugberk私はちょうど新しい空のMVCプロジェクトを作成し、デフォルトをすべて残して、末尾のスラッシュを削除するルールをweb.configに追加しました。同じエラー。どちらのルールもIIS Expressで動作していますか?これは奇妙です。私はセットアップに何か問題があると思っています... –

+0

私はそれについてのブログ記事を書いており、私はすべてIIS Expressでそれをテストしました:http://www.tugberkugurlu.com/archive/remove-trailing-slash from-the-urls-of-your-asp-net-web-site-with-iis-7-url-rewrite-moduleは何が間違っているのか理解できません。 – tugberk

答えて

2

問題は、私が間違ったノードに<rule>を置いたことでした。 '末尾のスラッシュを削除する'ルールはの中に入るはずですが、私は間違って<outboundRules></outboundRules>に配置しました(どのBTWに 'Remove ETag'ルールがあるのか​​)。