我正在将我的家庭网站移动到MVC并且遇到了url路由问题。该站点已经提供了几个包含路径中波浪号(〜)字符的链接;
之类的东西http://<root>.../~files/...
http://<root>.../~ws/...
我希望它们中的每一个都由独立的控制器处理,比如filesController,wsController,所以我的路由表看起来像
routes.MapRoute( "files", "~files/{*prms}", new { controller = "files", action = "index", prms = "" } );
routes.MapRoute( "ws", "~ws/{*prms}", new { controller = "ws", action = "index", prms = "" } );
...
但是当我尝试得到结果时,我收到错误消息“路由URL不能以'/'或'〜'字符开头,它不能包含'?'字符“。
据我所知,这些字符在ASP.net中具有特殊含义,但有可能以某种方式掩盖它们,至少是代字号吗?我应该自己解析和路由这样的请求吗?处理这类网址的最佳做法是什么?
答案 0 :(得分:0)
我看不出你能做到这一点。在ASP.NET中,波浪号字符表示应用程序的根,内部路由将使用它来重新定义其URI。您可以在更高级别(如IIS7的URL路由模块)执行此操作,并在其MVC之前重新映射URL吗?