我通常使用URL重写将内容ID传递到我的网站,所以这样
Foo.1.aspx
重写
Foo.aspx?id=1
对于特定的应用程序,我需要将多个ID传递给单个页面,所以我已经重写了接受这个的内容:
Foo.1,2,3,4,5.aspx
这在Cassini(Visual Studio的内置ad hoc Web服务器)中可以正常工作,但是当我在运行IIS的实时服务器上尝试时,会让我“Internet Explorer无法显示网页”。这是IIS的限制吗?我应该使用破折号还是下划线而不是逗号?
解决方法
我记得默认情况下Url Routing首先检查文件是否存在,文件名中的逗号不合法,这也许是为什么你得到错误。 IIS可能具有中止请求的遗留代码,然后才能进入asp.net进行处理。
Scott Hanselman的blog post谈到这一点,可能与你有关系。
作为一般评论:Url重写通常用于使URL友好和容易记住。
〜/ page.aspx?id = 1,4既不逊色也不比〜/ page / 1-2-3-4.aspx更好:两者都难以使用,为什么要经过额外的努力呢?避免创建新的网址表单,只因为你可以。用户,帮助台和其他开发人员将会被困惑。
网址重写最适用于转换
~/products/view.aspx?id=1 ~/products/category.aspx?type=beverage
进入
~/products/view/1 ~/products/category/beverage