3

次の手法を使用して、存在しないすべてのURLをキャッチし、独自の結果ページを提供します。

<handlers>
  <add name="Foo" path="foo.aspx" verb="*" type="Foo.UrlHandler" preCondition="integratedMode,runtimeVersionv2.0"/>
</handlers>

<httpErrors errorMode="Custom">
  <remove statusCode="404"/>
  <remove statusCode="405"/>
  <error statusCode="404" path="/foo.aspx" responseMode="ExecuteURL"/>
  <error statusCode="405" path="/foo.aspx" responseMode="ExecuteURL"/>
</httpErrors>

ただし、どのリクエストヘッダーがに渡されているかを確認するとUrlHandler、1つを除いてすべてが表示されます。If-Modified-Sinceヘッダーが渡されません。私は他のすべてを見ています(Cache-Control、Acceptなど)。

これで何か経験がありましたか?これは、この質問に関連しています。

IIS7の404+HttpHandlerへのフォームの投稿:すべてのPOSTデータが失われたのはなぜですか?

更新:私は一人ではありません-http: //www.webmasterworld.com/microsoft_asp_net/3935439.htm

4

1 に答える 1

1

解決しました。誰かが同じ問題を抱えている場合:

プロジェクトを.NETMVCに変更しました(2ですが、1〜3ですべて問題ありません)。キャッチオールへの単一のルートを作成しました:

public static void RegisterRoutes(RouteCollection routes)
{
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
  routes.MapRoute("All", "{*url}", new { controller = "CatchAll", action = "Index" });
}

次に、単一のCatchAllコントローラーを追加して、私のHttpHandlerがかつて行ったのとまったく同じように実行します。

于 2011-01-21T11:37:36.307 に答える