SharePoint 2013 无法加载用户配置文件 "HttpContext is in an assembly that is not referenced"

SharePoint 2013 Can't load user profiles "HttpContext is in an assembly that is not referenced"

我正在尝试创建一段代码,用 SharePoint 用户配置文件服务中的所有用户填充一个列表对象。

我添加了对 Microsoft.SharePoint、Microsoft.Office.Server.UserProfiles 的引用,并且有以下代码块:

using Microsoft.SharePoint;
using Microsoft.Office.Server.UserProfiles;
using System.Web;

namespace code.runner.intranet.Dal
{
    public class SPUsersDal : BaseDal
    {

        public List<SPUsersEntity> FetchItems(string siteName)
        {
            try
            {
                PostEvent("Attempting to load users from: " + siteName, BaseExceptionEventArgs.ExceptionLevel.Debug);

                using (var site = new SPSite(siteName))
                {
                    using (var web = site.OpenWeb())
                    {
                        PostEvent("Successfully opened: " + web.Url, BaseExceptionEventArgs.ExceptionLevel.Debug);

                        var serviceContext = SPServiceContext.GetContext(site);
                        var userProfileManager = new UserProfileManager(serviceContext);

                        foreach (UserProfile userProfile in userProfileManager)
                        {
                            // ...your code
                        }
                    }

然而下面几行:

var serviceContext = SPServiceContext.GetContext(site);
var userProfileManager = new UserProfileManager(serviceContext);

错误,消息:

The type "HttpContext" is defined in an assembly that is not referenced. You must add a reference to assembly System.Web"

因为我已经有了 System.Web 参考资料,所以我不确定为什么会收到这个。我也无法让 Microsoft 自己的示例工作(见此处:https://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.userprofile.aspx),在相同的对象上收到相同的错误。

我错过了什么?

您正在使用的 SharePoint 程序集很可能是针对 .Net 2.0/3.5 程序集构建的,并且您正在引用 .Net 4.x 程序集(或其他方式)。

如果不需要最新版本的 Framework (4.x),将项目切换到旧版本可能是一个解决方案。

为此,将项目属性中的 "Target Version" 从 4.x 更改为 3.5,并验证您使用的 x86/x64 风格是否正确。

注意:我相信 SharePoint 2013 应该使用 4.x 版本的框架 - 确保您的项目中有匹配的程序集和目标版本。有关详细信息,请参阅类似问题 - Reference to Microsoft.SharePoint.dll.