0

我有一个经典的 ASP 页面,它调用了一个外部 web 服务。这是实际过程的工作方式:

'[Part0 : Call the external webservice]
wsResponse = setConfirmation(...)


' [PART1: external webservice is responding]    
if not wsResponse is Nothing then
 '....Process the response from the webservice according to wsResponse
  code =wsResponse.getCode
  if code = 'C' then
     'We confirm the transaction and call a storedprocedure in SqlServer
  else
    'if code is different from C, we assume, the transaction status is 'not confirmed' or 'cancelled'

 '[PART2: no answer from external webservice] 
Else 
  'so wsReponse is nothing..We don't get any answer from the external webservice
    'transaction is not confirmed
   'the transaction status is set to 'not confirmed' in database

所以我想做的是在 PART2 中(当没有从外部 web 服务得到答案时),等待 30 秒,然后在数据库中发送“未确认”状态。所以我想再次做 PART0 即:再次调用外部 Web 服务至少 10 次,看看它是否响应。一种递归过程。所以我在想两种方法:

  1. 在 PART2 中,让 ASP 休眠 30 秒,然后再次进入 PART0(调用 web 服务),如果仍然没有响应,则写入 DB,事务未确认,但如果有响应,则执行 PART1。

  2. 在 PART2 中,调用至少重复 PART0 10 次,如果 10 次尝试后没有响应,则写入 DB,事务未确认。

所以我的问题是:有没有更好的方法来做到这一点,或者哪个或 1 或 2 会更好?而且,对于 1,我们如何让 ASP 像在 dotnet 或 PHP 中一样进入睡眠状态?

感谢您的回答。

问候

4

2 回答 2

4

这是一个简单的子程序,它将根据需要延迟几秒钟

Sub MyDelay(NumberOfSeconds)
Dim DateTimeResume
  DateTimeResume= DateAdd("s", NumberOfSeconds, Now())
  Do Until (Now() > DateTimeResume)
  Loop
End Sub

只需在第 2 部分中调用此子例程

Call MyDelay(30)
于 2013-07-06T13:38:30.813 回答
0

I don't know any way to put ASP to sleep. Especially when you are on a hosted web. So what I would do is this: I would have a service like Pingdom.com to request an ASP page every say 10 seconds. The requested ASP page will then attend to any pending transactions (logged in a tabel).

于 2013-07-05T11:03:41.343 回答