【问题标题】:Sharepoint get User informationSharepoint 获取用户信息
【发布时间】:2011-02-23 04:11:59
【问题描述】:

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

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

我做了以下步骤: 1) 使用 [程序集: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 集合中, 将 Web 部件添加到新页面。

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

如果我删除

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

然后一切都很好。

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

可能存在一些安全问题?

【问题讨论】:

    标签: sharepoint


    【解决方案1】:

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

    因此,您有以下选择:

    1. 使用具有自定义代码访问安全性的 wsp 部署 Web 部件。这有点乏味。
    2. 将 web.config 中的信任级别更改为完全。
    3. 将 dll 部署到 GAC。

    从最佳实践的角度来看,将 dll 部署到具有自定义代码访问安全性的 bin 将是最佳选择。但如果您没有安全限制,您可以考虑部署到 GAC 以使事情变得更简单。

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

    问候, 法伊兹

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多