如何使用ASP.NET“POST后重定向”模式?将帖子

时间:2010-08-24 16:34:34

标签: asp.net web-applications post redirect

我正在尝试在ASP.NET中首次实现Redirect After Post。假设我的业务对象可能需要几秒钟到一分钟才能完成,我会以什么顺序使用什么语法?

例如:

  1. 用户POST

  2. 服务器发出Server.Transfer或Response.Redirect

  3. 服务器做了一两分钟的Thread.Sleep
  4. 处理此类情况的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

在这种情况下,最好只坚持Response.Redirect(),以便为用户的客户端发出重定向,而不是Server.Transfer()执行纯服务器端重定向到不同的上下文。

关于要求用户等待的过程,您可能希望使用某种异步实现,其中将耗时的操作放在后台线程中;同时,用户不是在空白加载屏幕上等待,而是将Response.Redirect()给予“处理”页面,该页面轮询服务器以完成当前操作并更新用户。为了更好的润色,考虑实施像Facebook的图像上传器,它覆盖屏幕一角的进度条,同时用户继续正常使用网站。

答案 1 :(得分:1)

从我能看到你需要做的事情:

  1. 用户POST表单到服务器脚本
  2. 服务器使用Thread.Sleep
  3. 执行需要一两分钟的操作
  4. 服务器发出Response.Redirect
  5. 然而,这里明显的缺点是用户在服务器做一些工作时一直在等待(两分钟是很长的延迟时间,他们可能会认为出现了问题),并且可能你可能会遇到HTTP请求在浏览器上超时。

    就代码而言,它非常简单:

    1. 这是标准<FORM METHOD="POST">代码
    2. 做你需要做的事,看不清为什么你现在需要Thread.Sleep;你的服务器端处理完成后,你不想重定向发生吗?
    3. 致电Response.Redirect("mypage.aspx")以执行GET
    4. 这有帮助吗?