2009-02-19 123 views
0

我可以通过调用Web服务代理的ABORT方法来中止来自客户端的Web服务调用。如何在客户端和服务器端中止对web服务的调用?

但是,在托管Web服务的服务器上,只有在完成处理后才会结束通话。由于服务器在处理它时并不期望与已调用Web方法相关的任何其他输入,所以我无法从客户端关闭它。

有没有什么办法可以在服务器上中止调用,即停止大型计算(并从数据库服务器上也拉出一些数据)服务器正在工作?

回答

2

如果您使用ASMX Web服务,那么确实没有办法做到这一点。也许别人可以说WCF是否可能。

一般来说,它会要求您编写服务以期中断。大多数服务代码不是这样写的。

您是否期望经常中止请求?如果没有,那么最好在服务器上不做任何事情。

+0

我并不期望它会非常频繁地中止,但计算量非常大;所以如果用户决定做其他事情,即某种程度上想忽略结果,那么我认为停止该服务器进程会更好。 – Sun 2009-02-21 11:42:02

1

既然你在谈论一个简单的同步请求 - 响应,我不知道你会怎么做。

方法调用通常需要多长时间?

你想要的行为真的听起来像:

  • 开始的,做的东西(处理一些数据)的一系列动作,拿回来一个cookie
  • 当过程结束后(轮询/得到通知)结果取使用的cookie
  • 通控制指令,如中止,使用cookie

这的确听起来像你的造型处理,工作流,而不是一个函数调用。

如果您发现切换到这种模式的做法有很大好处,那么是的,您有选择。否则,仅仅吃掉(很少)浪费的计算成本可能会更简单。