ASP.NET Async Webservice调用问题

时间:2011-08-06 15:45:39

标签: c# .net asp.net

我有一个要求,我必须开发一个页面,通过JavaScript在服务器上运行服务。现在我还需要显示正在完成的工作的更新(例如,已完成%)。

这是我的代码结构。

    [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()。谁能告诉我如何以这种方式获得静力学。

1 个答案:

答案 0 :(得分:0)

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

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