2012-10-05 58 views
1

在我的網站項目在Global.asax(不MVC,而不是Web應用程序)的MapPageRoute不會讓我映射到一個頁面的擴展。route.MapPageRoute一個頁面,擴展

例如:

routes.MapPageRoute("GetMobilePassForAttendee", "Pass/Attendee/{attendeeId}", "~/GetMobilePass.aspx"); 

按預期工作,但

routes.MapPageRoute("GetMobilePassForAttendee", "Pass/Attendee/{attendeeId}/pass.pkpass", "~/GetMobilePass.aspx"); 

返回一個404

任何人都知道爲什麼嗎?

也許我應該使用URL重寫,但我讀過的材料已經建議我使用路由來代替。

+0

你有沒有解決這個問題?我有同樣的問題。這工作:/FederationMetadata/2007-06/FederationMetadata.xml/但這並不:/FederationMetadata/2007-06/FederationMetadata.xml因爲沒有結束斜線延伸。 – EdenMachine

+0

我其實沒有。我最終不需要它。你是怎麼去的?如果您有解決方案,請將其發佈,然後我將其標記爲正確。 –

回答

0

你有單獨測試的「pass.pkpass」頁面,讓說attendeeid = 1,看是否通/人/ 1/pass.pkpass是一個工作頁面,而不路由?

因爲.NET路由就不會在這種情況下工作,如果這是一個工作頁面。它將跳過路由並加載實際的「Pass/Attendee/1/pass.pkpass」頁面。

+0

啊,我明白你的意思了。我可以確認pass.pkpass不存在。如果期限在那裏(即延期),我實際上得到了一個404,不管我輸入了什麼。所以,如果我放入Pass/this_file_doesnt_exist.html,我仍然會得到404。感謝您的評論! –

0

這爲我工作:

routes.MapPageRoute("FederationMetadataRoute", "FederationMetadata/2007-06/{file}", "~/FederationMetadata/2007-06/FederationMetadata.aspx") 

然後,我只是檢查{file}參數,以確保它在你的情況下追平FederationMetadata.xml

因此,只需設置Pass/Attendee/{attendeeId}/pass.pkpassPass/Attendee/{attendeeId}/{pkpass}

和檢查{pkpass}以確保它在頁面上等於pass.pkpass