ASP.. NET异步web服务调用问题
本文关键字:调用 问题 服务 web NET 异步 ASP | 更新日期: 2023-09-27 18:04:36
我有一个要求,我必须开发一个通过JavaScript在服务器上调用运行服务的页面。现在我还需要显示有关正在完成的工作的更新(e)。g已完成%).
这是我的代码结构。
[WebMethod (true)]
//Below method takes around 5-10 minutes in execution
public string[] GenerateXMLSiteMap()
{
SiteMapGenerator siteMapGen = new SiteMapGenerator();
siteMapGen.SiteMapNodeAddedSuccessfully += new SiteMapNodeAdded(siteMapGen_SiteMapNodeAddedSuccessfully);
siteMapGen.GenerateSiteMap();
return GetStats();
}
void siteMapGen_SiteMapNodeAddedSuccessfully(string[] infos)
{
Session["CurrentPage"] = infos[0];
Session["PageScanned"] = infos[1];
Session["Time"] = infos[2];
}
[WebMethod (true)]
public string[] GetStats()
{
string[] stats = new string[4];
if (Session["CurrentPage"] != null)
{
stats[0] = Session["LinkDepth"].ToString();
stats[1] = Session["CurrentPage"].ToString();
stats[2] = Session["Time"].ToString();
}
return stats;
}
我从客户端调用GetStats()方法,但它从未被调用。我认为这是因为我正在调用GenerateXMLSiteMap(),它仍在执行。谁能告诉我如何以这种方式获得静态数据?
WebMethod必须是静态的,如果你使用MS Ajax,你必须设置ScriptMethod属性。
http://geekswithblogs.net/frankw/archive/2008/03/13/asp.net-ajax-callbacks-to-web-methods-in-aspx-pages.aspx