如何在C#MVC路由表中屏蔽波形符(〜)字符?

时间:2010-06-04 23:19:33

标签: asp.net asp.net-mvc asp.net-mvc-routing

我正在将我的家庭网站移动到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中具有特殊含义,但有可能以某种方式掩盖它们,至少是代字号吗?我应该自己解析和路由这样的请求吗?处理这类网址的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

我看不出你能做到这一点。在ASP.NET中,波浪号字符表示应用程序的根,内部路由将使用它来重新定义其URI。您可以在更高级别(如IIS7的URL路由模块)执行此操作,并在其MVC之前重新映射URL吗?