このルートが機能しない理由が気になります。
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 拡張機能でのみ機能します。