Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net web应用程序中的状态控制_Asp.net_Sharepoint_User Presence - Fatal编程技术网

asp.net web应用程序中的状态控制

asp.net web应用程序中的状态控制,asp.net,sharepoint,user-presence,Asp.net,Sharepoint,User Presence,我已经成功地将sharepoint中使用的Name.NameCtrl.1 active x实现在我自己定制的应用程序中。一切正常,我正在根据Office Comunication Server上的用户状态正确更新状态。但是,我没有像在SharePoint中那样,在presence控件中获得关于用户的任何其他详细信息。我得到的只是电子邮件字段中的sip地址(而不是AD中的实际默认电子邮件地址)和一个安排会议的链接 有人能告诉我如何让控件像在sharepoint中一样,从广告(部门、电子邮件、电话等

我已经成功地将sharepoint中使用的Name.NameCtrl.1 active x实现在我自己定制的应用程序中。一切正常,我正在根据Office Comunication Server上的用户状态正确更新状态。但是,我没有像在SharePoint中那样,在presence控件中获得关于用户的任何其他详细信息。我得到的只是电子邮件字段中的sip地址(而不是AD中的实际默认电子邮件地址)和一个安排会议的链接

有人能告诉我如何让控件像在sharepoint中一样,从广告(部门、电子邮件、电话等)填充详细信息吗??此外,我在控件中没有像sharepoint那样的“组织”选项卡

有什么想法吗

谢谢


Keeney

我认为在SharePoint中,控件中填充了用户配置文件服务中存在的数据。如果您希望在非sharepoint ASP.NET web应用程序中使用此功能,则必须从AD(并缓存!)中构建用户配置文件详细信息的存储库,您的控件将查看该存储库以显示该信息。

NameCtrl从客户端计算机上运行的Communicator实例(或Lync,如果您正在使用该实例)获取其大部分数据。不会直接从SharePoint中提取任何数据。要使NameCtrl在网页上正常工作,您需要确保:

  • Communicator(或Lync)正在客户端上运行并已登录
  • 您从中调用NameCtrl的网页位于浏览器的Intranet或Trusted Sites区域中
建议的模式是在调用任何其他方法之前调用NameCtrl对象上的PresenceEnabled-如果返回false,则上述prereq中的一个(或两个)为false。下面的代码通常适用于我

<script>

var sipUri = "your.contact@your.domain.com";

var nameCtrl = new ActiveXObject('Name.NameCtrl.1');
if (nameCtrl.PresenceEnabled)
{
  nameCtrl.OnStatusChange = onStatusChange;
  nameCtrl.GetStatus(sipUri, "1");
}


function onStatusChange(name, status, id)
{
  // This function is fired when the contacts presence status changes.
  // In a real world solution, you would want to update an image to reflect the users presence
  alert(name + ", " + status + ", " + id);
}

function ShowOOUI()
{
  nameCtrl.ShowOOUI(sipUri, 0, 15, 15);
}

function HideOOUI()
{
  nameCtrl.HideOOUI();
}

</script>

<span onmouseover="ShowOOUI()" onmouseout="HideOOUI()" style="border-style:solid">Your Contact</span>

var sipUri=“您的。contact@your.domain.com";
var nameCtrl=newActiveXObject('Name.nameCtrl.1');
如果(nameCtrl.PresenceEnabled)
{
nameCtrl.OnStatusChange=OnStatusChange;
nameCtrl.GetStatus(sipUri,“1”);
}
函数onStatusChange(名称、状态、id)
{
//当触点存在状态改变时,此功能启动。
//在现实世界的解决方案中,您可能希望更新图像以反映用户的状态
警报(名称+”、“+状态+”、“+id);
}
函数ShowOOUI()
{
nameCtrl.showoui(sipUri,0,15,15);
}
函数hideoui()
{
nameCtrl.hideoui();
}
你的联系人

如果您还没有看到它,则有一个良好的(ish)NameCtrl引用

-1,因为数据是从Lync/Communicator而不是SharePoint中提取的。NameCtrl我自己负责缓存所有数据,不需要缓存任何东西Paul,我正在将所有内容包装在一个[if(NameCtrl.PresenceEnabled){}]状态中,我可以更改我在communicator中的状态,它会更新我在网页中的图标。它仍然不会填充任何其他详细信息电子邮件、部门、电话等,而且我仍然没有组织选项卡。你在你的自定义应用程序中得到这些详细信息了吗?只是一种预感-你是否在联系人的SIPURI前面加上“sip:”?如果是,请尝试删除它,如果不是,请尝试添加它。当我的虚拟机启动时,我将对此进行测试。此外,作为一项健全检查,请确保您感兴趣的信息实际上是由Lync或Communicator获取的(顺便说一句,您使用的是哪种?)-您应该能够通过查看联系人的联系人卡来完成此操作。如果Lync/Communicator未显示此信息,则NameCtrl将无法获得与sip:前缀和不带前缀相同的功能(状态)。但仍然没有广告细节。我正在使用office communicator。查看某人的联系卡,告诉我他们下次有空的时间、工作描述、部门等。