我正在尝试使用如here所述的ActiveX控件将Lync 2010联系人卡集成到业务线(LOB)应用程序中,但我似乎在10台测试PC之间出现了不一致的行为。
我有10台测试机器中的7台在悬停员工ID时成功显示完整的Lync联系卡,如:
然而,其他3台PC只显示部分接触卡(方框中的圆点,没有存在指示)。在扩展部分卡时,我得到以下内容,看起来好像Lync无法在7台PC中的3台上正确解析用户。
代码在.net浏览器控件中运行(因此仅针对IE),我已将其抽象为以下测试代码,该代码在Internet Explorer独立运行中成功复制了该问题 - 希望将浏览器控制权移出等式。
我已经尝试过的事情:
确保lync正在运行,我获得部分卡的事实似乎意味着ActiveX控件正在PC上检测Lyncs的存在。
使用IE调试状态检查,'if(Lync.nameCtl.PresenceEnabled)'始终返回true(仅当Lync未运行时才会出现错误)。
确定问题不是用户特定的,而是PC特定的,例如用户可以登录到另一台PC并且功能正常,同样另一个用户可以登录到不工作的电脑而且他们也没有工作。因此,问题似乎与漫游配置文件等无关。
如果其中一台不能正常工作的PC恢复了新的企业形象。
Lync Server,Lync服务器位于群集中,但在检查系统托盘中的Lync配置信息时,正在运行的PC正在连接到与非某些PC相同的终端服务器。
经过检查的软件版本 - 所有PC似乎都具有相同的软件版本:
带有SP1的Windows 7企业版(所有PC之间存在轻微的修补差异,但看起来没有相关的KB。在工作的PC和那些我无法理解的PC之间也没有模式。)
Internet Explorer版本9.0.8112.16421是的,我知道,但这是我正在使用的:-)
Lync 2010版本:4.0.7577.4356
代码(在地方匿名)
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE"/>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
<div id="822">822</div>
<div id="624">624</div>
<div id="620">620</div>
<div id="23A">23A</div>
<div id="B47">B47</div>
<div id="084">084</div>
<script>
$(document).ready(function () {
$("div").on({
mouseenter: function () {
Lync.showOOUI(this.id, event)
}, mouseleave: function () {
Lync.hideOOUI()
}
});
});
var Lync = {
sipUri: "",
// Load up the NAME.dll functionality
nameCtl: new ActiveXObject('Name.NameCtrl.1'),
// Watch status changes
onStatusChange: function (name, status, id) {
},
// Shows the Lync widget UI
showOOUI: function (id, event) {
Lync.sipUri = id + "@MyDomain.com";
// Only show Lync presence if enabled
if (Lync.nameCtl.PresenceEnabled) {
Lync.nameCtl.OnStatusChange = Lync.onStatusChange;
Lync.nameCtl.GetStatus(Lync.sipUri, "0");
Lync.nameCtl.ShowOOUI(Lync.sipUri, 0, event.clientX, event.clientY);
}
},
// Hides the Lync widget UI
hideOOUI: function () {
Lync.nameCtl.HideOOUI();
},
// Opens the full Lync widget menu
openInfoPane: function () {
Lync.nameCtl.DoAccelerator();
}
};
</script>
</body>
</html>