【问题标题】:Request.RawURL not set to default.aspx at application rootRequest.RawURL 未在应用程序根目录设置为 default.aspx
【发布时间】:2012-01-24 00:04:49
【问题描述】:

我刚刚将我的 ASP.NET 应用程序从 .NET 3.5 升级到 4.0,并发现在通过 http://mysite.com/ 请求默认文档 default.aspx 时 Request.RawURL 设置为“/”。在 .NET 3.5 中,Request.RawURL 将设置为“/default.aspx”。

有没有办法在 4.0 中启用这种 .NET 3.5 行为?

我已尝试通过注册表禁用无扩展名 URL。我还浏览了ASP.NET 4.0 Breaking Changes 文档并设置了表单标记操作属性,但是查看页面的源代码显示为操作属性设置的值没有被拾取并且正在恢复为“/”。

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

【问题讨论】:

    标签: asp.net .net iis


    【解决方案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
    

    也许您可以详细说明您的应用程序?

    【讨论】:

    • RawUrl 在应用程序的一些地方使用过,因此他们只需稍作改动即可开始工作。我希望这些问题是相关的,并且会有一个修复程序来正确设置 RawUrl 和 action 属性。未设置 action 属性的主要问题是未引发事件处理程序。我可以解决this question 中提到的这个问题,但我觉得这不是最好的解决方案。
    • 我认为您的问题的答案就在 Breaking Changes 文档中:asp.net/whitepapers/aspnet4/breaking-changes#0.1__Toc256770154
    • 我已经阅读了我的帖子中提到的内容。建议的更改不能解决问题。
    猜你喜欢
    • 2014-11-16
    • 2019-02-12
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    相关资源
    最近更新 更多