我在这里使用ASP.NET 3.5发布了301重定向查询:
Redirecting default.aspx to root virtual directory
基于我到那里的回复,我意识到ASP.NET的Request.RawUrl方法可能存在一个错误,当在子目录中使用时,该方法无法返回实际的原始URL(没有/default.aspx) ,即/default.aspx页面位于子目录中。
有人可以对这个可能的错误有所了解吗?
谢谢,
阿西
答案 0 :(得分:2)
我在这里找到了一个很好的解释
http://codeasp.net/blogs/vivek_iit/microsoft-net/873/301-redirect-from-default-aspx-to-site-root
由于
答案 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