2010-06-04 44 views
0

我正在将我的家庭网站转移到MVC,并且遇到了URL路由问题。该网站已经提供了几个链接,在路径中包含波浪号(〜)字符;像如何在C#MVC路由表中掩饰代字符(〜)字符?

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

我看不到你可以做到这一点。在ASP.NET中,代字符代表应用程序的根,内部路由将使用它来重定义它们的URI。你可能可以在更高层次上完成它(比如IIS7的URL路由模块),并在他的MVC之前重新映射这些URL。