今天伙同公司某Exchange MVP给某POC环境部署Lync,前面都比较顺利,结果到最后打开SharePoint发现无法查看用户的在线状态。
Google搜了个遍,连init.js的相关方法都打开看了一遍、ActiveX的文档也都看了一遍都木有找到原因。最后一个偶然的灵机一动,才发现居然忘了在AD里配置用户的邮箱(POC环境里不需要邮件演示)……
于是干脆把上网搜的内容总结一下,以后再出现此类问题的时候可以按照这个内容来进行排查。(其实SharePoint + Lync基本上不需要做任何配置就可以实现在线状态的查看的……)
0、Lync客户端一切正常(这个是前提条件,排除掉Lync服务器端配置的问题)
1、客户端是否安装了Lync客户端,是否正在运行(这个是废话,嗯)
2、客户端是否安装了Office(2010或者2007 + SP2或者2003 + SP2),因为在线状态的查看是依赖一个ActiveX控件(NameCtrl,文件是name.dll)来实现的,这个ActiveX控件是随着Office一起安装的。如果是Office 2007或者2003的话,需要安装到最新的一个SP。
3、是否使用的是IE7以上的浏览器(我看js代码,似乎对非IE也有一定程度的支持,不过我没试),是否启用了ActiveX(理由同上一条)
4、站点是否设置为Intranet或者受信任站点,这是那个ActiveX控件的要求(在NameCtrl的MSDN文档中写的)。不过Office365网站要家到信任站点的话,好像会出问题?这个有时间再试试……
5、是否在Web应用程序常规设置中开启了显示用户在线状态,默认是开启的(在管理中心 - 应用程序shezhi - Web应用程序设置 - 常规设置中)。另外多说一句,有很多网站,尤其是用SharePoint做的外网,我们在访问的时候经常会弹出那个NameCtrl的ActiveX提示询问我们是否启用,这个时候就可以通过这个设置,很简单的去掉这个提示信息。
6、用户在AD中是否配置了电子邮件?这又分成两个部分:
6.1、在个人网站里能否显示在线状态?如果不能的话,那应该是用户配置文件中的电子邮件没有配置(用户配置文件中也有一个SIP地址,我不能肯定是哪个起的作用)
6.2、在列表视图(或列表表单等地方)中,能否显示在线状态?如果不能的话,是因为网站的用户信息列表中没有配置电子邮件地址,即SPUser的Email属性(用户信息列表里面也有一个SIP地址,但是起作用的应该是电子邮件这个属性)。注意这个的数据来源和个人网站里面是不一样的,而且页面调用的代码也不太一样……
当然,如果用户配置文件和User Profile Service配置正常的话,是可以把用户属性从AD导入到用户配置文件,然后再进一步导入到网站的用户信息列表中的……如果不能的话,写个程序设置一下就好了……