Sharepoint获取用户信息

时间:2010-05-24 09:52:34

标签: sharepoint

我有MOSS服务器,用户授权将通过AD。

我想以programmaticaly方式获取一些当前的用户信息,例如电子邮件,电话号码。

我做了以下步骤: 1)使用[assembly:AllowPartiallyTrustedCallers]创建dll 2)我有继承System.Web.UI.WebControls.WebParts.WebPart的类PhoneBookCL 我尝试覆盖CreateChildControls()进行测试;

using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; 
using Microsoft.Office.Server;
using Microsoft.Office.Server.UserProfiles;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.Portal;

public class PhoneBookCL : WebPart
{

        SPUser currentUser = null;
        protected override void CreateChildControls()
        {

            try
            {
                SPWeb web = SPControl.GetContextWeb(Context);
                currentUser = web.CurrentUser;
            }
            catch (Exception exp) { value = exp.Message; }          

        }
}

3)为dll分配了强名称,然后将SafeControl添加到web.config:       

4)dll - >到\ Bin目录,将此WebPart添加到SP webparts集合, 将webpart添加到新页面。

刷新页面转到异常:意外异常。

如果我删除

"SPWeb web = SPControl.GetContextWeb(Context);
                currentUser = web.CurrentUser;"

然后一切都很棒。

我可以创建Label并更改其Text属性和其他内容。 此外,我试图从Microsoft.SharePoint.WebControls.WebPart继承,它实际上继承了UI ... WebPart,所以结果是一样的。

也许有一些安全问题?

1 个答案:

答案 0 :(得分:2)

当您将dll部署到bin时会发生此问题。我假设你的web.config的信任级别为WSS_minimal。最小的信任将不允许访问对象模型。

因此,您有以下选择:

  1. 使用具有自定义代码访问安全性的wsp部署webpart。这有点单调乏味。
  2. 将web.config中的信任级别更改为“完全”。
  3. 将dll部署到GAC。
  4. 从最佳实践的角度来看,将dll部署到具有自定义代码访问安全性的bin将是最佳选择。但是,如果您没有安全限制,可以考虑部署到GAC以简化操作。

    参考:http://msdn.microsoft.com/en-us/library/ee909485%28office.12%29.aspx

    此致 法伊兹