日期:2014-05-17  浏览次数:20382 次

一个.NET有深度的问题,求高手帮忙看看
在自定义HttpModule的EndRequest事件中向页面输出内容,

(或者在Global的Application_EndRequest事件中)



protected void Application_EndRequest(object sender, EventArgs e)
{   
    HttpContext.Current.Response.Write("1234567");
}




类似上述,

结果在火狐和IE中都没有结果输出,其他双核浏览器IE模式下也没有;
只有在原生chrome或双核浏览器的chrome模式下才有结果。



不知道这是什么原因。。。。

------解决方案--------------------
清楚缓存试试,只要是有浏览器可以,那和服务器端就没什么关系了
------解决方案--------------------
尽量不要用Application_EndRequest,事实上任何我能想到的用途,都无需这个事件。
------解决方案--------------------
在EndRequest中输出是写到html标记的外面去了,虽然是不合法的html写法,不过大多数浏览器都是支持的,IE/FireFox也没有问题。我测试的版本是:
IE 9
FireFox 22.0
搜狗4.0

------解决方案--------------------
这是一个结束事件,按道理说应该是没有输出才合理.这里的结束是指向页面输出结束,但那些可以输出的浏览器可能对这个定义不准确.
------解决方案--------------------
就算是执行里面.cs的代码,也可以,但至少不应该再向页面输出.
------解决方案--------------------
Application_EndRequest 向 “页面”输出?

什么意思?你的页面还没有输出html,就应该执行Applicaiton_EndRequest?那么你应该看看是不是IIS出现严重故障了,还高兴地去看页面干吗?
------解决方案--------------------
我想你既然写“只有在原生chrome或双核浏览器的chrome模式下才有结果”,虽然你没有说,我估计你根本没经过IIS测试。整了个简易的 casino 然后直接使用 chrome 打开吧?

如果你使用 casino,那么应该以 ie 为唯一调试浏览器。
------解决方案--------------------
casino  -->  casini

在window8上的chrome会故意把你的桌面切换到恶心的metro去。而且chrome早已经背叛了几年前攻击人家adobe之类的插件时的信誓旦旦,现在不但google自己发明了好几款插件,而且chrome与许多其它浏览一样越来越不像是浏览器、而成为操作系统入侵劫持工具了。