我是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();
}
答案 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
函数。