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(),它仍在执行。谁能告诉我如何以这种方式获得静态数据?

ASP.. NET异步web服务调用问题

WebMethod必须是静态的,如果你使用MS Ajax,你必须设置ScriptMethod属性。

http://geekswithblogs.net/frankw/archive/2008/03/13/asp.net-ajax-callbacks-to-web-methods-in-aspx-pages.aspx