取消服务电话

时间:2014-01-08 07:24:52

标签: c# asp.net-mvc wcf

我使用的是WCF服务,它不是异步服务。 我在其中进行数据库操作。数据库操作给我带来了巨大的成果。 我想提供一种取消对客户端操作的方法。 任何人都可以建议达到同样的目的。我google了很多 也可以找到一些解决方案,有些人说服务操作是异步的。这是我从msdn得到的 http://msdn.microsoft.com/en-us/library/ms731177(v=vs.110).aspx 但是我该怎么做呢。 另外,由于我是新手,我无法弄清楚这件事。 任何人都可以帮我这个。 提前谢谢。

此致

2 个答案:

答案 0 :(得分:0)

您可以保持服务同步,但在方法内部进行异步调用,例如围绕数据库查询。在这种情况下,您可以使用支持CancellationToken的类Task。但是你应该使用.NET 4及更高版本。

答案 1 :(得分:0)

我只想取消服务呼叫(没有会话锁定(会话创建/更新/删除),你可以在javascript中对服务进行ajax调用,如:

   var xhr;

   var serviceUrl = "Service1.svc/GetData";
   xhr= $.ajax({
        type: "POST",
        url: serviceUrl,
        data: "{\"value\":\"request\"}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            //anything you need to do on success
        }
    });

对于中止请求,您可以执行以下操作:

  if(xhr && xhr.readystate != 4){
        xhr.abort();
    }

请不要中止等待请求的处理程序&不要求自己,如果你正在玩Session(读取除外),它将不起作用&等待请求完成。

如果您有上述情况,最好使用vzayko提到的Task

此外,如果您正在使用MVC 4,您还可以使用TAP(Task-based Asynchronous Pattern),它专门针对在ASP.net MVC中使用任务进行了优化。