1

我想知道我是否可以访问 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)],这就是我需要做的吗?

4

0 回答 0