获取从WCF到asp.net页面的状态更新

时间:2012-11-02 13:46:52

标签: asp.net wcf long-polling long-running-processes

我想知道我是否可以在WCF服务中访问静态变量以获取状态更新,如果可以的话,如何执行此操作?

我有一个很长的过程,可以更新1000个产品。该过程从asp.net页面触发,并且用户希望在该过程运行时来自服务的状态更新,即“处理产品123”。我有服务,我在更新面板中有一个计时器控件,我想用它来轮询服务状态更新。我正在考虑定时器控件回发,我使用GetStatus方法查询服务以获取当前状态,但我认为状态消息将始终相同,因为将在Page_Load上创建新的服务实例。那么,如何从WCF服务到asp.net页面获取运行状态变量?

protected void Timer1_Tick(object sender, EventArgs e)
{
    if (statusMessage == null)
    {
        // feed operation finished or timer is running invalid
        Timer1.Enabled = false;
    }

    try
    {
        UpdateStatusDisplay();
    }
    catch (Exception exp)
    {
        ....
    }
}

在我的WCF服务中

public string Status = "";

    public void BeginImport(ImportOptions options)
    {
        _options = options;

        string conString = ConfigurationManager.ConnectionStrings["String1"].ConnectionString;
        using (var con = new SqlConnection(conString))
        {
            con.Open();

            var products = con.Query("SELECT * FROM PRODUCTS");

            foreach (var product in products)
            {
                Status = "Processing product " + product.ProductName);
            }

        }
    }

    public string GetStatus()
    {
        return Status;
    }

编辑: 我刚刚阅读了[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)],这是我需要做的全部吗?

0 个答案:

没有答案