我正在尝试使用ActiveX控件将Lync 2010联系人卡集成到业务线(LOB)应用程序中,如here所述,但我似乎在10台测试PC之间出现了不一致的行为 .

我有10台测试机器中的7台在悬停员工ID时成功显示完整的Lync联系卡,如:

This

但是,其他3台PC只显示部分接触卡(方框中的圆点,没有存在指示) . 在扩展部分卡时,我得到以下内容,看起来好像Lync无法在7台PC中的3台上正确解析用户 .

this

代码在.net浏览器控件中运行(因此仅针对IE),我已将其抽象为以下测试代码,该代码成功地在独立运行的Internet Explorer中重现问题 - 希望浏览器控制出等式 .

Things I have already tried:

  • 确保lync正在运行,我得到部分卡的事实似乎意味着ActiveX控件正在PC上检测Lyncs的存在 .

  • 使用IE调试状态检查,'if(Lync.nameCtl.PresenceEnabled)'始终返回true(仅当Lync未运行时才会出现错误) .

  • 根据thisthis清除了Lync解析程序缓存并下拉了一个新的通讯簿

  • 确定问题不是用户特定的,而是PC特定的,例如用户可以登录到另一台PC并且功能正常,同样另一个用户可以登录到不工作的电脑而且它们也不起作用 . 因此,问题似乎与漫游配置文件等无关 .

  • 有一台没有工作的PC恢复了新的企业形象 .

  • Lync服务器,Lync服务器位于群集中,但在检查系统托盘中的Lync配置信息时,正在运行的PC正在连接到与非某些PC相同的终端服务器 .

  • 经过检查的软件版本 - 所有PC似乎都有相同的软件版本:

带有SP1的Windows 7企业版(所有PC之间的差异很小,但没有看起来相关的KB . 在工作的PC和那些我不知道的PC之间也没有模式) .

Internet Explorer版本9.0.8112.16421是的,我知道,但这是我正在使用的:-)

Lync 2010版本:4.0.7577.4356

Code (在某些地方匿名)

<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>