我有在 linux 上运行在 mono 下的 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 上后:它返回 404 用于没有术语的路由(例如 /search)并且适用于术语(例如 /search/123)。
我最终将这条路线分成了两条:
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]*$"
}
);
此外,我尝试使用 reg exp 并使用默认值而不是可选参数定义术语,但没有任何成功。有谁知道为什么它在windows上运行而不在linux上运行?