我也许希望从ASP.NET太多,但在Apache中是微不足道的重写URL请求等等类似: http://mysite/myfolder/mypage/niceurlparameter 实际上设法提供静态页面http://mysite/mypage.html此Global.asax路由设置有什么问题?
我该怎么做,在Global.asax中?
我已经试过这样:
RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/*", "~/myfolder/{page}.html");
但它一直返回404,当我要求http://mysite/myfolder/mypage/niceurlparameter。
然而,这个工程:
RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}.html/*", "~/myfolder/{page}.html");
所以请求http://mysite/myfolder/mypage.html/niceurlparameter当我得到的mypage.html。
我只想摆脱我的网址中的“.html”部分。我错过了什么?
更新: 出于某种原因,在前一种情况下,'*'通配符未被接受。
更改为:
RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/{whatever}", "~/myfolder/{page}.html");
出现路由到HTML页面的请求,但后来我得到的错误:
There is no build provider registered for the extension '.html'.
为什么在世界上它只是在前者的情况下工作(与HTML中的URL),而不是当HTML被遗漏了吗?
您运行的是哪个版本的IIS?我似乎记得IIS 6不会允许这个开箱即用,您需要添加通配符映射。 – 2012-04-27 08:58:14
看到这个问题的可能的解决方案:http://stackoverflow.com/q/9918066/25727 – Jan 2012-04-27 09:01:07
IIS是v7.5。建议的链接有帮助。谢谢 – tishma 2012-04-27 11:11:14