Iis 7 URL重写以删除文件扩展名会导致页面永远无法完全加载

Iis 7 URL重写以删除文件扩展名会导致页面永远无法完全加载,iis-7,coldfusion,url-rewriting,url-rewrite-module,Iis 7,Coldfusion,Url Rewriting,Url Rewrite Module,我编写了简单的重写规则,可以重写.cfm扩展链接(使用出站规则),并使用等效的入站规则解析为完整的.cfm路径。例如: 此出站链接: http://mysite/section/page 解析到此完整路径: http://mysite/section/page.cfm 当我在任何浏览器中访问不带文件扩展名的链接时,页面都会显示在屏幕上,但浏览器似乎仍在“等待”页面完成加载(在浏览器选项卡中获取旋转的圆圈,而Firefox则显示“从MyWeb站点传输数据…”) 在“等待”页面加载大约5分钟后,浏览

我编写了简单的重写规则,可以重写.cfm扩展链接(使用出站规则),并使用等效的入站规则解析为完整的.cfm路径。例如:

此出站链接:

http://mysite/section/page

解析到此完整路径:

http://mysite/section/page.cfm

当我在任何浏览器中访问不带文件扩展名的链接时,页面都会显示在屏幕上,但浏览器似乎仍在“等待”页面完成加载(在浏览器选项卡中获取旋转的圆圈,而Firefox则显示“从MyWeb站点传输数据…”)

在“等待”页面加载大约5分钟后,浏览器将停止尝试加载,并显示“无法显示页面”错误。我使用Firebug的网络面板来查看发生了什么,基本上页面永远不会完成加载(在浏览器崩溃之前,文件的大小仍然是0kb)

如果我转到完全限定路径页面,例如
http://mysite/section/page.cfm
然后页面在大约20毫秒内完全加载,Firebug给出了页面的大小


谁能告诉我发生了什么以及如何修复它吗?

好的,我已经解决了,或者说已经解决了

这是一个冷静的问题。如果有其他人面临这一问题,你会这样做:

  • 创建Application.cfc页面
  • 将此功能添加到组件:

  • 因此,这里发生的事情是,我们正在将内容长度头设置为正确的大小,因为如果您让ColdFusion自己做,它会把事情搞砸。结束无止境页面加载的方法是在设置内容长度后放置
    getPageContext().flush()
    ,以便浏览器获取所有页面内容


    坦白地说,我是通过谷歌搜索和随机黑客攻击来实现的。这可能不是解决问题的正确方法(因为在Firebug中,它说有一个500错误正在发生),但它似乎可以工作。

    好的,我已经解决了它,或者实际上解决了它

    这是一个冷静的问题。如果有其他人面临这一问题,你会这样做:

  • 创建Application.cfc页面
  • 将此功能添加到组件:

  • 因此,这里发生的事情是,我们正在将内容长度头设置为正确的大小,因为如果您让ColdFusion自己做,它会把事情搞砸。结束无止境页面加载的方法是在设置内容长度后放置
    getPageContext().flush()
    ,以便浏览器获取所有页面内容


    坦白地说,我是通过谷歌搜索和随机黑客攻击来实现的。这可能不是解决问题的正确方法(因为在Firebug中,它说有500个错误正在发生),但它似乎可以工作。

    这适用于什么版本的CF?它是标准Java代码,所以我认为应该可以在大多数CF版本中工作。但我使用的是CF10,这段代码几乎肯定可以处理从CF6到更高版本的所有内容,但这可能与最初的问题有关,即CF10使用的servlet引擎(修改过的Tomcat)与以前的版本(JRun)不同;不确定连接器是否也发生了变化,和/或模块顺序是否可能是问题的一部分。这适用于什么版本的CF?这是标准Java代码,因此我认为应该适用于大多数CF版本。但我使用的是CF10,这段代码几乎肯定可以处理从CF6到更高版本的所有内容,但这可能与最初的问题有关,即CF10使用的servlet引擎(修改过的Tomcat)与以前的版本(JRun)不同;不确定连接器是否也发生了变化,和/或模块订购是否在问题中起作用。 <cffunction name="onRequestEnd"> <cfheader name="Content-Length" value="#Len(getPageContext().getOut().getString())#" /> <cfset getPageContext().flush()> </cffunction>