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