如何知道.net WebMethod何时返回其价值?

时间:2011-08-26 12:15:05

标签: c# web-services

我是c#Webservices的新手。我有一个将返回大量数据的WebMethod。因此,应该可以查看转移的状态。我如何知道WebMethod是否以及何时返回其值?我可以绑定某个事件吗?

有问题的方法如下:

[WebMethod]
public List<TEST.Models.ArticleModel> GetArticles(string terminalSerial)
{
    Communication comm = new Communication {
        StartDate = DateTime.Now,
        Status = "Started"
    };
    var terminal = (from t in context.Terminals
                    where t.SerialNumber == terminalSerial
                    select t).FirstOrDefault();
    var articles = from a in context.Articles
                   where a.CountryID == terminal.Customer.CountryID
                      && a.LastEdit > terminal.LastSync
                   select new TEST.Models.ArticleModel {
                       ArticleID = a.ArticleID,
                       ArticleGroupID = a.ArticleGroupID,
                       ArticleGroupName = a.ArticleGroup.Name,
                       CountryName = a.Country.Name,
                       Description = a.Description,
                       EAN = a.EAN,
                       SAPID = a.SAPID
                   };
    terminal.LastSync = DateTime.Now;
    comm.TerminalID = terminal.TerminalID;
    context.SubmitChanges();
    return articles.ToList();
}

2 个答案:

答案 0 :(得分:0)

服务器端:使用日志记录或将列表写入普通文件,如下所示:

[WebMethod]
public List<TEST.Models.ArticleModel> GetArticles(string terminalSerial)
{

//..... your code here

System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt");
List<TEST.Models.ArticleModel> theList = articles.ToList();
file.WriteLine("you have "+ theList.Count );
for(ArticleModel articleModel : theList)
   file.WriteLine(articleModel.ToString());

file.Close();
}


在客户端,调用WebService并将结果写入文件。

答案 1 :(得分:0)

如果我正确理解了您的问题,您希望在客户端知道如何通知用户传输已完成。

通常,Ajax请求有一种方法可以从客户端连接至少2个事件:“OnSucess”和“OnError”。根据请求是否成功完成,将调用其中一个。例如,考虑这段代码(使用JQuery来执行请求):

$.ajax({
   type: "POST",
   url: "YourMebService.asmx/GetArticles",
   data: "{'terminalSerial': '" + "your_value_here" + "'}",
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function(msg) {
     alert('Your request completed successfully');
   },
   error: function(xhr, ajaxOptions, thrownError) {
      alert('There was a problem processing the request');
   }
});

上面的代码基本上是在执行以下操作:

向名为YourwebService.asmx的Web服务发出HTTP-POST请求,该请求公开名为GetArticles的方法(查看url参数)

data参数设置WebMethod所期望的参数,在本例中,它只是一个名为terminalSerial的字符串类型的参数。    如果请求成功完成,将调用success函数;如果没有,将调用error函数。