2009-09-03 94 views
0

我實現URL路由在asp.net 3.5用下面的代碼工作/,其中/ en /不是物理目錄, 和default.aspx位於products /目錄下並自動加載。URL路由不適​​合根文件夾

它適用於除根之外的所有內容:www.mysite.com/en/。此網址失敗。在www.mysite.com下有一個default.aspx,確實適用於www.mysite.com/en/default.aspx。但是,當我去www.mysite.com/en時,出現錯誤,而不是404。這是在進行實際路由時。當它試圖從routedata值中檢索「page」屬性時,它在代碼的第一行失敗。它只是從未找到的對象引用崩潰。我曾經在某處讀過這是根目錄下的一個asp.net問題。你有什麼想法嗎?

回答

0

我通過添加另一個規則來解決它!

這裏是更好的代碼:

try 
    { 
     string virtualPath = requestContext.RouteData.Values["page"].ToString(); 


     //if virtualpath doesn't end in aspx, then it's just a directory path loading 
     //default.aspx by default. 
     if (!virtualPath.EndsWith(".aspx") && !virtualPath.EndsWith(".txt")) 
     { 
      virtualPath += "default.aspx"; 
     } 

     return BuildManager.CreateInstanceFromVirtualPath(
       virtualPath, 
       typeof(Page)) as Page; 
    } 
    catch 
    { 
     //the following is in case when it's off the root /en/ 
     return BuildManager.CreateInstanceFromVirtualPath("~/default.aspx", typeof(Page)) as Page; 
    }