6

ASP.NET に期待しすぎているのかもしれませんが、Apache では URL を書き換えるのは簡単なので、次のように要求します: http://mysite/myfolder/mypage/niceurlparameter は実際に静的ページhttp://mysite/mypage.html

Global.asax でそれを行うにはどうすればよいですか?

私はこれを試しました:

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/*", "~/myfolder/{page}.html");

しかし、 http://mysite/myfolder/mypage/niceurlparameterを要求すると、404 が返され続けます。

ただし、これは機能します。

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}.html/*", "~/myfolder/{page}.html");

そのため、 http://mysite/myfolder/mypage.html/niceurlparameterをリクエストすると mypage.html を取得します。

URL の「.html」部分を削除したいだけです。私は何が欠けていますか?

更新: 何らかの理由で、以前のケースでは「*」ワイルドカードは受け入れられませんでした。

変更:

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/{whatever}", "~/myfolder/{page}.html");

リクエストをhtmlページにルーティングするように見えますが、エラーが発生します:

There is no build provider registered for the extension '.html'. 

なぜ世界では、前者の場合 (URL に html を使用) でのみ機能し、html が省略されている場合は機能しないのでしょうか?

4

1 に答える 1

3

拡張子 '.html' に登録されているビルド プロバイダーはありません

静的な html ファイルは IIS によって直接処理される必要があるため、このエラーが発生します。ただし、あなたの場合、ASP.NET MVC フレームワークは type のファイルを処理しようとしていますが.html、これはできません。

したがって、これが必要だと思われる場合は、新しいプロバイダーを作成して web.config ファイルに登録する必要があります。これを見て

ASP.NET のカスタム ファイル拡張子 - ヘルプが必要です!

静的な html コンテンツを .aspx ファイルに変更するだけです。単純なコピー アンド ペーストで問題なく動作するはずです。ファイルタイプの処理方法を認識します。

于 2012-04-27T11:30:11.763 に答える