2012-01-24 49 views
1

我剛將ASP.NET應用程序從.NET 3.5升級到4.0,並發現請求默認文檔時Request.RawURL設置爲「/」 default.aspx,通過http://mysite.com/。在.NET 3.5中,Request.RawURL將被設置爲「/default.aspx」。Request.RawURL未在應用程序根目錄下設置爲default.aspx

有沒有辦法在4.0中啓用這個.NET 3.5行爲?

我曾嘗試通過註冊表禁用無擴展名的URL。我還瀏覽了ASP.NET 4.0 Breaking Changes文檔,並設置了表單標記操作屬性,但是查看頁面的源代碼顯示爲action屬性設置的值未被拾取並正在恢復爲「/」。

目前運行在IIS 7.5集成模式和Win7上。

回答

1

確實,我可以在.NET 2.0和.NET 4.0之間切換時重現行爲 - .NET 2.0 & 3.5都共享相同的公共語言運行時CLR2,並且基類庫(BCL)的更多內容.NET的版本。在.NET 4.0中出現了CLR4,這似乎是差異發生的地方。我以前從未注意到!

我相信新的行爲是正確的,因爲RawUrl反映了實際請求的URL路徑。很難理解您的確切需求,但我認爲您可以嘗試使用Request.Path

URL: http://example.com/ 
Request.RawUrl:/
Request.Path: /default.aspx 

也許你可以詳細闡述一下你的應用程序?

+0

RawUrl在應用程序的一些地方使用,所以他們只需要一點點改變就可以工作。我希望這些問題是相關的,並且可以修復RawUrl以及正確設置action屬性。未設置action屬性的主要問題是事件處理程序未被引發。我可以解決這個問題,如[這個問題]中提到的(http://stackoverflow.com/questions/8995557/how-to-set-form-action-attribute),但我覺得這不是最好的解決方案。 – Andrew

+0

我認爲你的問題的答案就在這裏突破變化文件:http://www.asp.net/whitepapers/aspnet4/breaking-changes#0.1__Toc256770154 –

+0

我讀過,正如我的文章中提到的。建議的更改不能解決問題。 – Andrew

相關問題