3

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>

サイトは、統合パイプライン モードではなくクラシックで実行されています。

アイデアを持っている人はいますか?設定がどこか間違っていると思われますが、どこが見つからないようです。

4

5 に答える 5

0

This is a bit of a long shot, but have you tried actually making the configuration changes inside of IIS?

I know that the web.config way is supposed to be 100% foolproof, but I've seen a few things where it helps to just configure it in IIS to get it working correctly.

于 2008-12-01T14:57:28.977 に答える
0

また、新しい IIS7 書き換えモジュールを確認することもできます。ここで詳細を読むことができますhttp://learn.iis.net/page.aspx/460/using-url-rewrite-module/、しかし、自家製のISAPIフィルターよりもしっかりしている可能性があります

于 2008-12-01T17:39:09.493 に答える
0

すべての Apache mod_rewrite 構文をサポートし、リバース プロキシもサポートするhttp://www.codeplex.com/urlrewriterを試してください。

于 2008-12-01T17:41:02.237 に答える
0
  1. クラシック パイプライン モードで実行している場合、セクションは必要ありません。<system.webServer>統合モードに必要です。
  2. ワイルドカード スクリプト マッピングを有効にする

    1. IIS7 Manager を開き、サイトに移動します

    2. ハンドラ マッピングをクリックします。

    3. [アクション] パネルで、[ワイルド カード スクリプト マップの追加] をクリックします。

    4. ダイアログで aspnet_isapi.dll を指定します

    5. マッピングの確認を求めるメッセージ ボックスで [はい] をクリックします。

    6. アクション パネルで [View Ordered List] をクリックし、WildcardScriptMap を StaticFile Handler の直前に移動します。

これで十分なはずです。

于 2008-12-01T18:04:11.923 に答える