最简单的例子吧,系统默认生成的代码:
 routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );我希望每个action后加上.htm的扩展名,于是就改了一下: routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}.htm", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );导致的后果是,启动后无法显示默认主页了,会报404错误,找不到文件.但是如果在地址栏中输入:http://localhost:25633/home/index.htm则是可以显示的.同时系统默认生成的其他页面的链接后也带了.htm,且均可正常访问。
请问需要再修改哪里?或者是再通过什么手段可以让Action后加扩展名

解决方案 »

  1.   

    配置 WEB.CONFIG 加URLRewriter.dll URL重写 转静态的
    IIS 扩展配置
      

  2.   


     {controller}/{action}/{id}.htm这样不行么?
      

  3.   


    如果是iis6,需要配置相应的扩展名映射关系。
      

  4.   

    个人理解根源在于访问http://localhost:25633/时,被解析为:
    Controller = HomeController
    Action = Index
    Id = “”
    而我们在Routes中指明了,{action}.htm才被映射到对应的“Action”上。即:“Index.htm”是映射到“Index”的Action上的。但单纯的“{action}”,是映射不过去的。即“Index”无法映射到“Index”的Action上。
      

  5.   

    当然我们可以通过IIS默认主页、URL_Rewrite等方式来解决,但它不是我找的解决方法