9

特定のファイル拡張子が含まれている場合、ルートが一致しないという問題があります。IIS の問題であると思われますが、追跡できないようです。

まず、RouteExistingFiles をオフにしました。

routes.RouteExistingFiles = false;

そして、次のルートがあります。

routes.MapRoute("", "category/{category}.aspx", new { controller = "Category", action = "View" });

また、次の URL はこのルートと一致しません:

http://mysite/category/test.aspx

ただし、ファイル拡張子を削除してルートを変更すると、次のようになります。

routes.MapRoute("", "category/{category}", new { controller = "Category", action = "View" });

次に、上記の URL は {category} が「test.aspx」に設定されているものと一致します。

このルートにも同じ問題があります。

routes.MapRoute("sitemap", "sitemap.xml", new { controller = "Resource", action = "Sitemap" });

奇妙なことは、ファイル拡張子を持つすべてのルートでこの問題が発生していないことです。次のルートは、私にとってはうまく機能しているようです。

routes.MapRoute("", "favicon.ico", new { controller = "Resource", action = "Favicon" });
routes.MapRoute("", "min.css", new { controller = "Resource", action = "Css" });
routes.MapRoute("", "min.js", new { controller = "Resource", action = "JavaScript" });
routes.MapRoute("", "rsd.xml", new { controller = "MetaWeblog", action = "Rsd" });

.aspx および .xml 拡張子について注意すべきことはありますか? これは IIS の問題でしょうか? RouteDebuggerを使用するよりも、これをデバッグするためのより良い方法はありますか?

4

2 に答える 2

3

URL に .xml または .aspx が含まれている場合、要求がそれらのアクションに送信されないことが問題ですか?

私はこれが真実であるべきだと思います、

routes.RouteExistingFiles = true;

アップデート:

IIS 7 で実行されているサイトの次のルートを使用して、2 つのシナリオでテストしました。

routes.MapRoute("sitemap", "{sitemap}.xml", 
                   new { controller = "Resource", action = "Sitemap" });

RouteExistingFilesは false です。

この場合、sitemap.xml ファイルが存在する場合、リクエストはそのファイルに送信されます。それ以外の場合、リクエストはアクションに送信されます。

RouteExistingFilesは真です、

sitemap.xml ファイルが存在するか、リクエストが常にアクションに送られているわけではありません。

于 2012-05-30T15:56:26.267 に答える
0

この問題に遭遇しました。私にとっては、マネージ ハンドラーを持たないファイルに対してルーティングが呼び出されていませんでした。次の構成は私にとってはうまくいきました:

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>
于 2014-06-30T13:55:14.870 に答える