我正在尝试使路由模块使用默认操作或控制器,但事实并非如此.我总是面对404页面找不到.我忘记做某事吗?我非常喜欢在ASP.NET MVC功能中进行路由,但我不确定我是否可以在MR中执行相同操作.我正在使用IIS7与.NET 3.5的城堡主干的构建.
如果您使用的是IIS7,则需要在system.webServer/httpModules节点中注册路由模块.
system.web/httpHandlers和httpModules是IIS7忽略的AFAIK.
MonoRail路由绝对有效; 我们快乐地运转起来.这是config和global.asax.cs片段:
(事实上,我们从来没有在IIS6上工作,但是在web-dev服务器上工作 - 从那时起我们就得到了支持并被告知它可以在IIS6级别上映射到aspnet_isapi.dll - 但是然后,运行Win2003的开发人员更新到了IIS7上的东西,所以我们没有尝试过)
protected virtual void RegisterRoutes(IRoutingRuleContainer engine) { engine.Add ( new PatternRoute(ThorController.CtlrHome, "/[controller]") .DefaultForController().Is(ThorController.CtlrHome) .DefaultForArea().Is(ThorController.AreaPublic) .DefaultForAction().Is(ThorController.ActionIndex) ); engine.Add ( new PatternRoute(ThorController.KeyDefault, "///[action]/[id]") .DefaultForArea().Is(ThorController.AreaPublic) .DefaultForAction().Is(ThorController.ActionIndex) .DefaultFor(ThorController.KeyId).IsEmpty ); }
(第一个路由处理我们的应用程序root)
(这些值是我们的ThorController基类上的consts以尝试减少字符串文字)
顺便说一句,任何人都知道是否存在语法来执行我们在一行中执行静态文件处理的操作?肯定有比我们的"解决方案"更好的方式;-)