我有一个长期运行的ASP响应(实际上是一个MVC动作),如果用户已经导航,我想取消它.我认为这应该很简单:
if(!this.Response.IsClientConnected)
{
Response.End();
}
Run Code Online (Sandbox Code Playgroud)
所以我运行自己的测试(使用MVC迷你探查器,虽然你可以使用自己的):
using (var step = MiniProfiler.Current.Step("Response_IsClientConnected"))
if(!this.Response.IsClientConnected)
{
Response.End();
}
Run Code Online (Sandbox Code Playgroud)
结果发现每次我调用它都会非常快:我的开发人员设置不到1毫秒.这是真是假.
在什么情况下Response.IsClientConnected预计会很慢?
我必须支持IIS6 - 会Response.IsClientConnected更慢吗?
有谁知道它在幕后做了什么?在低级别,我希望TCP/IP堆栈知道连接是否仍然存在,所以我希望这个检查是即时的,但IIS是否还需要做一些额外的工作来检查?