0

我可以通过调用 Web 服务代理的 ABORT 方法中止来自客户端的 Web 服务调用。

但是,在托管 Web 服务的服务器上,调用仅在完成处理时结束。由于服务器在处理它时不期望与已调用的 Web 方法相关的任何其他输入,因此我无法从客户端关闭它。

有什么办法我也可以中止服务器上的调用,即停止大型计算(并从数据库服务器中提取一些数据)哪个服务器正在处理?

4

2 回答 2

2

如果您使用的是 ASMX Web 服务,那么肯定没有办法做到这一点。也许其他人可以谈论 WCF 是否可行。

通常,它会要求您编写服务以预期中断。大多数服务代码不是这样编写的。

您是否希望经常中止请求?如果没有,那么最好在服务器上什么也不做。

于 2009-02-19T13:46:39.497 回答
1

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

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

您真正想要的行为听起来像:

  • 启动一系列动作(处理一些数据),取回一个 cookie
  • 当进程完成时(轮询/获取通知),使用 cookie 获取结果
  • 使用 cookie 传递控制指令,如中止

这听起来确实像是将您的处理建模为工作流,而不是函数调用。

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

于 2009-06-13T06:51:09.693 回答