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