ASP.NET 3.5中与Request.RawUrl属性相关的可能错误/问题

时间:2010-09-01 12:36:33

标签: asp.net redirect

我在这里使用ASP.NET 3.5发布了301重定向查询:

Redirecting default.aspx to root virtual directory

基于我到那里的回复,我意识到ASP.NET的Request.RawUrl方法可能存在一个错误,当在子目录中使用时,该方法无法返回实际的原始URL(没有/default.aspx) ,即/default.aspx页面位于子目录中。

有人可以对这个可能的错误有所了解吗?

谢谢,

阿西

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

如果您怀疑这是一个错误,那么该去的地方是Microsoft Connect,您可以直接向Microsoft报告和讨论该错误。

修改:我能够根据您的评论重现外观。

然而,我无法重现无限循环。我将代码注入到Web应用程序的Global.asax Application_BeginRequest处理程序中,并获得了单个重定向的预期行为。

还有其他和IMO更好的处理全局重定向规则的选项。在IIS7上,我使用URL Rewrite模块在IIS中配置重写规则。您可以阅读更多相关信息并在此处下载:http://www.iis.net/download/urlrewrite。诸如此类的解决方案的吸引力在于您可以自定义和更新重写规则,而无需重新编译应用程序。

修改:我可以通过改为使用 default.aspx(重定向后)检索原始网址

Request.ServerVariables["CACHE_URL"]

值得一试。

答案 2 :(得分:0)

您是否查看了虚拟目录的IIS设置?如果默认文档设置为default.aspx,那么这将解释您遇到的无限循环。您告诉网站重定向到没有“default.aspx”的虚拟目录,并且IIS在下一个请求中检测到此情况并将其重新放回 ad infinitum

右键单击虚拟目录,选择“属性”,然后选择“文档”选项卡。如果default.aspx在列表中,那么这就是你将得到的。请求的Url将作为/folder/default.aspx而不是/ folder /

传递给ASP.NET辅助进程。

这不是错误。如果IIS没有这样做,你会得到一个找不到页面的错误。

听起来我需要调查网址重写http://msdn.microsoft.com/en-us/library/ms972974.aspx