我试图在ASP.NET中首次实现重定向后。假设我的业务对象可能需要几秒钟到几分钟才能完成,按什么顺序以及使用什么语法?如何通过“POST后重定向”模式使用ASP.NET? [编辑]
例如:
网友发帖的
服务器发出的Server.Transfer或Response.Redirect的
- 服务器做一些事情,需要一两角分钟的Thread.Sleep
处理这种情况的最佳方法是什么?
我试图在ASP.NET中首次实现重定向后。假设我的业务对象可能需要几秒钟到几分钟才能完成,按什么顺序以及使用什么语法?如何通过“POST后重定向”模式使用ASP.NET? [编辑]
例如:
网友发帖的
服务器发出的Server.Transfer或Response.Redirect的
处理这种情况的最佳方法是什么?
在这种情况下,最好是坚持使用Response.Redirect()
,以便用户的客户端发出重定向,而不是Server.Transfer()
,它执行纯服务器端重定向到不同的上下文。
关于需要用户等待的过程,您可能希望使用某种异步实现,其中耗时的操作放在后台线程中;与此同时,用户不是在空白的加载屏幕上等待,而是将Response.Redirect()
给予“处理”页面,轮询服务器以完成当前操作并更新用户。要增加波兰语,请考虑实施类似Facebook的图片上传工具,在用户继续正常使用网站的同时,在屏幕的角落放置进度条。
你有关于如何添加波兰语的提示吗? JavaScript只是轮询一个WCF服务(或等价)? – LamonteCristo 2010-08-24 17:46:01
确切地说,服务器会有某种Web方法,用于检索当前正在执行的进程的进度并将其返回给JavaScript。从那里JavaScript会简单地更新其进度栏。您可以使用JavaScript setInterval()指示客户端每隔几秒轮询一次服务器以获取当前进度。对另一个问题的这个答案有一个[如何用JavaScript实现轮询过程]的例子(http://stackoverflow.com/questions/3526955/displaying-post-data-with-jquery/3527018#3527018)。 – 2010-08-24 17:54:10
最后,在重定向之后放置bizlogic以避免双重提交会有意义吗?似乎有可能发生...... – LamonteCristo 2010-08-24 20:21:46
从我所看到的,你需要做的:
但是,这里显而易见的缺点是用户在服务器做某些工作时一直在等待(两分钟是很长的延迟时间,他们可能会认为某事出错了),并且可能你可能会在浏览器上发出HTTP请求超时。
在代码方面,这是非常简单的:
<FORM METHOD="POST">
码Response.Redirect("mypage.aspx")
执行GET这是否帮助?
Huggil Thread.Sleep只是模拟后端进程,需要一些时间才能完成.. – LamonteCristo 2010-08-24 17:43:36
是的,谢谢...似乎BizLogic总是在重定向之前运行在任何情况下。 – LamonteCristo 2010-08-24 17:51:10
您是否希望用户知道他提交的结果,以防失败? – Holystream 2010-08-24 16:42:05
可能的重复[Server.Transfer Vs. Response.Redirect](http://stackoverflow.com/questions/224569/server-transfer-vs-response-redirect) – 2010-08-24 16:42:28
@Nathan泰勒:不是重复的......虽然这是有帮助的,但似乎我需要响应。重定向在“重定向后”模式,但我不确定步骤?我应该不是将#2与#3颠倒过来?我只是假设这是正确的序列 – LamonteCristo 2010-08-24 17:20:03