2009-09-03 14 views
0

ルートフォルダには機能しません。 /、/ en /は物理ディレクトリではなく、 とdefault.aspxはproducts /ディレクトリにあり、自動的に読み込まれます。URLルーティングは、私は次のコードでasp.net 3.5の下でURLルーティングを実装しました

これは、ルート(www.mysite.com/en/)以外のすべてで機能します。このURLは失敗します。 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; 
    } 
関連する問題