Linux のモノラルで実行される MVC3 アプリケーションがあります。私はこのルートを持っています:
routes.MapRoute(
"search",
@"search/{term}",
new {
controller = MVC.Mobile.Name,
action = MVC.Mobile.Actions.ActionNames.Search,
term = UrlParameter.Optional
},
new {
term = @"^[0-9]*$"
}
);
これは、用語パラメーターを表示する場合 (/search/123 など) または表示しない場合 (/search など) の両方で、Windows で正常に動作しています。問題は、Linux にデプロイした後に発生します。用語のないルート (/search など) に対して 404 を返し、用語 (/search/123 など) で正常に動作します。
このルートを 2 つに分割することになりました。
routes.MapRoute(
"search-empty",
@"search",
new {
controller = MVC.Mobile.Name,
action = MVC.Mobile.Actions.ActionNames.Search
}
);
routes.MapRoute(
"search",
@"search/{term}",
new {
controller = MVC.Mobile.Name,
action = MVC.Mobile.Actions.ActionNames.Search
},
new {
term = @"^[0-9]*$"
}
);
また、正規表現で遊んで、オプションのパラメーターの代わりにデフォルト値で用語を定義しようとしましたが、成功しませんでした。なぜそれがWindowsで動作し、Linuxでは動作しないのか知っている人はいますか?