2011-09-28 47 views
0

我最近開始一個web應用程序,並決定使用它的路由(基本上只是爲了得到一些練習)。URL路由不適​​用於ASP.NET Web表單?

該應用程序是.NET4,我使用VS2010 SP1和IIS Express(集成管道)。

事情是,當我運行應用時,只要路由URL中沒有參數,路由就可以正常工作。如果有一個參數,然後我得到一個404

下面是從的global.asax.cs相關代碼:

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.Clear(); 
    routes.MapPageRoute("Users_Edit", "users/view/{username}", "~/users/user_detail.aspx", false); 
    routes.MapPageRoute("Users_Create", "users/create", "~/users/user-detail.aspx", false);  
} 

void Application_Start(object sender, EventArgs e) 
{ 
    RegisterRoutes(RouteTable.Routes); 
} 

該應用程序是在IIS快遞從VS.運行虛擬文件夾是/ cms。

如果我去http://localhost:8888/cms/users/create我看到我的網頁按預期。

如果我去http://localhost:8888/cms/users/view/Matt我得到一個404錯誤(從ASP.NET不是從IIS,所以請求將進入ASP.NET管道)。

我試着加入以下的web.config,但這並沒有什麼差別:

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 

我試圖改變到經典模式IIS表達但並沒有區別。也沒有使用好的舊卡西尼而不是IIS Express。

任何想法我做錯了什麼?

乾杯,

馬特

回答

0

似乎有一個錯字在非工作路線的實際頁面名稱。您已在此路線中使用page_detail.aspx,而在工作路線中,您已使用page-detail.aspx - 注意下劃線與連字符。所以我相信修復應該這樣做,即

routes.MapPageRoute("Users_Edit", "users/view/{username}", "~/users/user-detail.aspx", false); 
+0

OMG(拍打額頭)。我昨天花了整整一個下午的時間把這件事撕成碎片,這只是一個錯字,盯着我的臉!我需要一個假期!非常感謝你! – MattW