2012-01-24 45 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

相关问题