ASP .NET 2/IIS7/Vista で Web サイトを実行しています。拡張子のない URL を使用できるようにする URL 書き換えモジュールがあります。これを機能させるために、すべての要求が aspnet_isapi.dll に転送されるように、構成ファイルの system.webServer セクションを構成しました。また、モジュール セクションに URL 書き換えモジュールを追加し、runAllManagedModulesForAllRequests を true に設定しました。
Web サイトを起動し、URL 書き換えを使用するページの 1 つにアクセスすると、ページが正しくレンダリングされます。ただし、別のページにアクセスすると、サイトが機能しなくなり、404 not found が表示されます。また、URL 書き換えモジュールのブレークポイントがヒットしていないこともわかりました。IIS が最初の要求をリライタに転送するように見えますが、後続の要求は別の場所に転送されます。エラー ページでは、Notification が MapRequestHandler であり、Handler が StaticFile であると示されています。
次に、web.config ファイルに小さな変更を加えて保存すると、Web サイトが再起動され、ブラウザーでページをリロードすると、すべて機能します。次に、別のリンクをクリックすると、再び壊れます。
記録のために、構成ファイルからいくつかのスニペットを示します。まず、system.web の下で:
<httpModules>
<add name="UrlRewriteModule" type="Arcs.CoopFurniture.TelesalesWeb.UrlRewriteModule, Arcs.CoopFurniture.TelesalesWeb" />
</httpModules>
次に、system.webServer の下で:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRewriteModule" type="Arcs.CoopFurniture.TelesalesWeb.UrlRewriteModule, Arcs.CoopFurniture.TelesalesWeb" preCondition="managedHandler" />
</modules>
<handlers>
<add name="AspNet" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
</handlers>
<validation validateIntegratedModeConfiguration="false" />
</system.web>
サイトは、統合パイプライン モードではなくクラシックで実行されています。
アイデアを持っている人はいますか?設定がどこか間違っていると思われますが、どこが見つからないようです。