2011-08-17 66 views
0

我有一瞥。什么是正确的配置或路由,以便Default.aspx,“”和“〜/”不被路由?

它的突出的路由选项卡上的一个空行

Match Area Url Data constraints DataTokens

True Root -- --

本地似乎卡西尼不正确模拟从localhost所以改为localhost/site虚拟目录似乎并不授予任何额外的测试见解。

  • 本地测试
    • 卡西尼(窗口7(32位和64位是可用的))
    • 似乎不使用或者允许集成
  • 部署环境
    • IIS7集成
    • 尝试了http路由设置克至推//site但是我跑进斜线问题(/site将路线/site/site,而/site/会按预期工作
  • 的web.config
    • 试图用各种错误设定runAllManagedModules=false的几种方法
    • 使用<remove name="UrlRoutingModule-4.0" /> <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />这是linked
  • 试过

我需要/site/~)请求去~/Default.aspx 一种方式很想有/去那里。

我该怎么做?

+0

我很愿意尽力帮助你,但我读过这3次,我仍然不知道你究竟想要完成什么?你能澄清一切吗? –

+0

aspx和mvc页面和谐共处。在不是根的虚拟路径上。在哪里appRoot调用将被定向到默认的.aspx页面,而不是家庭控制器 – Maslow

回答

0

要启用Default.aspx作为默认网址,您只需要删除路由处理,以便不存在全部路由。

默认情况下,所有MVC 3的项目有:

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

这是一个包罗万象的,将匹配一切你在你的URL传递路线。如果你删除了这个,并且没有定义路径,那么它将使用你在web.config中设置的默认页面。

要映射到/siteDefault.aspx只需要添加一个特殊的路线:

routes.MapPageRoute("SitetoDefault", "site", "~/Default.aspx"); 

这将看到/site并将其路由到您的默认页。

向路由表添加任何其他路由时必须小心。他们都必须定义一个控制器,否则你必须添加一个路由约束。事情是这样的:

//controller defined 
routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

//route constraint 
routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { 
     controller = "Home", 
     action = "Index", 
     id = UrlParameter.Optional 
    }, // Parameter defaults 
    new { controller = "^(products)|(account)|(home)$" } 
); 

这里有更详细的创建更复杂的路由:http://www.asp.net/mvc/tutorials/creating-a-custom-route-constraint-cs

+0

,那么mvc无法处理我的404,并使用default.aspx作为默认页面? – Maslow