1

このルートが機能しない理由が気になります。

routes.MapRoute("Tracking",
                                    "{mailingId}/{subject}/{listItemId}/MailReport.{fileExtension}",
                                    new { controller = "Mailing", action = "OpenerImage", subject = UrlParameter.Optional },
                                    new
                                    {
                                        mailingId = new NonEmptyGuidRouteConstraint(),
                                        listItemId = new NonEmptyGuidRouteConstraint(),
                                        fileExtension = @"(aspx|php|asp|html|htm|json|xml)"
                                    });

パラメータはリストの最初のfileExtensionsパラメータのみを取得するため、..../MailReport.php のページにアクセスすると 404 エラーが発生します。

アップデート:

これは、ルーティングの問題というよりは IIS の問題だと思います。ルーティング エンジンよりも先に、IIS が拡張機能を解釈しようとしていると思います。カスタム ルート制約も作成しようとしましたが、これは ASPX 拡張機能でのみ機能します。

4

1 に答える 1

0

これを処理するためにIIS URL Rewriteルールを使用することになりました。独自のルーティング クラス (機能する場合と機能しない場合があります) またはハンドラーを作成しない限り、これは不可能だと思います。

アップデート:

さらに調査した後、これを web.config に追加すると、IIS のルーティングをバイパスできました。

 <modules runAllManagedModulesForAllRequests="true" >
      <remove name="UrlRoutingModule"/>
    </modules>

これはsystem.webServerセクションにあり、統合モードで実行している必要があると思います。そうしないと、このセクションは無視されます。

于 2012-10-01T23:41:55.103 に答える