【发布时间】:2011-12-06 06:02:19
【问题描述】:
情况
我有一个 ASP.NET Webform,其中包含有关用户 Microsoft Lync 2010 会话的一些状态信息。在 Page_Load 事件中,我注册了一个事件处理程序,用于侦听 Lync 会话状态更改事件。
一旦事件触发,事件处理程序会做出正确反应并完成其工作:它会更改特定标签的相应文本。问题是,这些更改在前端网页中不可见。
代码
这是一个全局 Lync 客户端实例,在页面中定义。
private LyncClient _lyncClient;
这里我在 Page_Load 事件中注册 LyncClient。
protected void Page_Load(object sender, EventArgs e)
{
RegisterLyncClient();
}
我将 LyncClient 实例分配给全局 _lyncClient。之后我注册了我的事件监听器。
private void RegisterLyncClient()
{
_lyncClient = LyncClient.GetClient();
_lyncClient.StateChanged += HandleStateChanged;
}
此函数在 Lync 客户端更改其状态时正确触发。它在调试模式下可见。
private void HandleStateChanged(object sender, ClientStateChangedEventArgs e)
{
SetLyncStatus(e.NewState);
}
标签文本已正确更改(在调试模式下)。但是这些变化在前端是不可见的。
private void SetLyncStatus(ClientState lyncState)
{
lblLyncStatus.Text = lyncState.ToString();
}
假设
如果我使用按钮手动更改状态,或者如果我使用计时器每秒检查和调整状态,则更改是可见的。所以我假设在 HandleStateChanged 事件处理程序中所做的更改是不可见的,因为调用 SetLyncStatus 函数后没有回发。
问题
是否可以从事件处理程序强制回发,而不是从用户操作(例如用户单击按钮)中触发?如果可以调用标签或定义部分的部分刷新,那将是完美的。
非常感谢任何建议。谢谢!
【问题讨论】:
-
您的具体情况是什么?可能有更合适的方法来实施您的解决方案,而不是在您的 Web 服务器上安装 Lync 客户端
-
是的,这是我在本地开发过程中没有意识到的另一个问题。确保 Lync 事件发生在服务器而不是客户端。好的,谢谢这是一个非常好的建议......
标签: asp.net event-handling postback code-behind lync