2010-03-30 80 views
0

這似乎應該很容易,但由於某種原因,我沒有運氣。我正在將現有的WebForms應用程序遷移到MVC,因此我需要將網站的根目錄指向我現有的aspx頁面,並且僅將路由應用於指定的路由。下面是我有:ASP.NET MVC路由 - 重定向到aspx?

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); 

     RouteTable.Routes.Add(
      "Root", 
      new Route("", new DefaultRouteHandler()) 
     ); 

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

所以ASPX頁面應該被忽略,默認的根URL應該由該處理程序進行處理:

public class DefaultRouteHandler : IRouteHandler 
{ 
    public IHttpHandler GetHttpHandler(RequestContext requestContext) 
    { 
     return System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(
       "~/Dashboard/default.aspx", typeof(Page)) as IHttpHandler; 
    } 
} 

這似乎是工作確定,但由此產生的YPOD給我這個:

找到了具有相同ID的多個控件 '__Page'。跟蹤需要 控件具有唯一的ID。

這似乎意味着該頁面以某種方式越來越呈現兩次。如果我直接輸入網址到我的儀表板頁面,它可以正常工作(沒有路由,沒有錯誤)。我不知道爲什麼處理程序代碼會做不同的事情。底線 - 我想簡單地將根網址路徑重定向到我選擇的aspx - 任何人都可以點亮一些光線嗎?

回答

0

嗯。所以我的瀏覽器因爲一些不相關的原因而崩潰了,現在我已經重啓了它,上面的代碼看起來像預期的那樣完美。我對服務器端代碼因爲瀏覽器重啓而現在的行爲方式完全感到困惑(顯然不知怎麼的東西被我緩慢地錯誤地緩存了),但是現在看來這已經不是問題了。

編輯:嗯,這實際上仍然是一個問題 - 不知道爲什麼它以前工作,但它有點隨機。底線似乎是,在某些情況下,MVC似乎不能很好地跟蹤Trace.axd解析器,否則會產生完全有效的標記。我真的沒有一個很好的解釋,但禁用web.config中的跟蹤繞過了錯誤。對於我現在的目的來說,這已經足夠好了,但我很樂意聽到其他人更好的解釋...

0

我真的不明白你的問題,可能我不夠熟練。無論如何,我會嘗試...;)

如果你想從根路徑重定向,爲什麼不使用從IIS的默認文件,例如把它放在index.aspx,然後在這個頁面添加一個response.redirect到您想要重定向到的頁面?

+0

我的問題是特定於ASP.NET MVC的,所以這並不適用。 – 2010-03-30 13:45:10