首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • asp.net能不能在客户端关闭后在后台继续将页面执行完毕? [已结帖,结帖人:domustdohz]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • domustdohz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2007-02-02 14:09:33 楼主
    asp.net能不能让页面在客户端关闭后继续在服务器后台执行,直到执行完毕?
    如果能够这样实现,要怎么实现?
    我知道PHP可以通过调用ignore_user_abort来实现这种功能。
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-02 14:21:341楼 得分:25
    客户端显示页面的时候,后台早已经执行完了页面对象早已经不存在了。客户端关闭的时候根本不向服务器发送指令。

    你的问题从何说起?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lxmfll2000
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-02 14:26:292楼 得分:0
    ????肯定不行。楼主为什么要这么作呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • flyin2006
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-02 14:58:273楼 得分:0
    这种情况不存在
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • uno
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-02 15:22:524楼 得分:0
    试试

    Response.Flush();
    Response.Close();

    //   ...其他代码
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-02 15:37:115楼 得分:0
    如果正好在下载aspx过程中,可以使用   isClientConnected   来判断是否客户端在线。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cpp2017
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 5

    发表于:2007-02-02 15:43:336楼 得分:15
    客户端显示页面的时候,后台早已经执行完了页面对象早已经不存在了。客户端关闭的时候根本不向服务器发送指令。 ============= 同意。 楼主的意思可能是,页面还没有返回,处于等待状态的时候。 此时关闭页面,后台还是继续执行。 除非程序中用了if(!Response.IsClientConnected)来检测状态而用代码终止运行。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • domustdohz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-07 21:13:257楼 得分:0
    楼主的意思可能是,页面还没有返回,处于等待状态的时候。
    此时关闭页面,后台还是继续执行。
    除非程序中用了if(!Response.IsClientConnected)来检测状态而用代码终止运行。
    =====================================
    我说的就是这种情况。
    每个页面的执行时间很长譬如要5分钟,
    客户端很可能等不了这么久,可能就直接把浏览器关闭了。
    这时候,我希望页面能够在后台继续执行下去。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • domustdohz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-07 21:21:048楼 得分:0
    还有碰到需要长时间执行的页面,有没有办法在客户端显示准确的进度信息?
    我试着用ajax实现,不过碰到了比较奇怪的问题。
    在ajax版问了好几天了也没有什么好的解决方法,甚至都不知道原因。
    那个问题在这了
    http://community.csdn.net/Expert/topic/5333/5333166.xml?temp=.1083338
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LifeForCode
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-07 21:38:459楼 得分:10
    楼主的意思可能是,页面还没有返回,处于等待状态的时候。
    此时关闭页面,后台还是继续执行。
    除非程序中用了if(!Response.IsClientConnected)来检测状态而用代码终止运行。
    =====================================
    我说的就是这种情况。
    每个页面的执行时间很长譬如要5分钟,
    客户端很可能等不了这么久,可能就直接把浏览器关闭了。
    这时候,我希望页面能够在后台继续执行下去。
    ----------------
    从理论上说,客户端关闭了页面,是不可能中断伺服端的动作的。
    自己测试一下吧;DeBug的时候,Run到断点,再关闭页面,继续Run,....你就知道答案了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-07 21:50:5310楼 得分:0
    我基本上认为客户端应该只考虑10秒钟忍耐期。你说要等5分钟,绝对是web程序设计上比较“浅”的结果。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-07 21:55:0011楼 得分:0
    isClientConnected   实际上需要输出一点东西,然后才知道客户端是否仍然在线。使用它的相关代码请参见:

    http://www.google.com/search?q=asp.net+isclientconnected&sourceid=ie7&rls=com.microsoft:en-US&ie=utf8&oe=utf8

    从这里可以大概感受到它的用场。要注意,必须输出东西才能知道客户端是否在线,如果服务器端根本不输出东西,isclientConnected   返回的结果永远是true。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ytzz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-07 22:07:3712楼 得分:0
    不可能吧~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lnwuyaowei
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-07 22:23:4113楼 得分:0
    http://www.aspxboy.com/private/5331/default.aspx
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sp1234
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-07 23:36:1914楼 得分:0
    不要由调试器的行为类比为正式运行。实际上,正式运行的网页通常并不知道客户端关闭了,而且大部分时间并不输出或者即使输出也是写到缓冲,因此“页面本来就是继续执行完毕”的,不会立刻断开。使用isClientConnected   的目的正是为了让它不要白白浪费服务器时间。

    楼主的问题恰好问反了。

    异步页面与这个问题没有什么。异步页面是为了绕开asp.net缓冲池容量太小这个“BUG”,但并不会让5分钟的页面下载加快几秒钟。这就像是有的人发明了在高速公路上可以随意飙车的技术,个别人偶尔用一下可以,但是如果不是偶尔才用一下的,那么缓冲池容量在asp.net下一版本就会增加或者变成可设置的。因此异步页面技术最好把它当作特权阶级才应该使用的技术,如果用多了就会反而降低系统的表现。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • domustdohz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-02-08 10:10:5615楼 得分:0
    我基本上认为客户端应该只考虑10秒钟忍耐期。你说要等5分钟,绝对是web程序设计上比较“浅”的结果。
    =======================================
    呵呵,其实5分钟只是代表一个比较长的时间。
    譬如,我现在有一个页面负责用JMail从邮箱收取信件,向新浪的邮箱是比较慢的
    邮件多的话收取过程是很慢的。
    所以我希望他能在后台运行,然后将进度信息保存在内存或文件中,
    然后由其他页面用ajax的异步调用,显示状态信息。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ghj1976
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 6

    发表于:2008-07-23 15:55:2616楼 得分:0
    这个功能参看我这篇博客


    http://blog.joycode.com/ghj/archive/2008/07/23/115199.aspx
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • WEBCONFIG
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-08 09:54:0117楼 得分:0
    引用 16 楼 ghj1976 的回复:
    这个功能参看我这篇博客


    http://blog.joycode.com/ghj/archive/2008/07/23/115199.aspx



    怎样在客户端中断服务器的执行?
    修改 删除 举报 引用 回复