SharePoint 2013 Не удается загрузить профили пользователей HttpContext находится в сборке, на которую нет ссылок

Я пытаюсь создать фрагмент кода, который будет заполнять объект списка всеми пользователями в службе профилей пользователей 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);

Ошибаются, с сообщением:

Тип «HttpContext» определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку System.Web"

Поскольку у меня уже есть ссылка на System.Web, я не уверен, почему я получаю это. Я также не смог заставить работать собственный пример Microsoft (см. здесь: https://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.userprofile.aspx), получая ту же ошибку на тех же объектах.

Что мне не хватает?


person Michael A    schedule 13.05.2015    source источник
comment
@AlexeiLevenkov Где я могу найти их для загрузки?   -  person Michael A    schedule 13.05.2015
comment
@AlexeiLevenkov Это решило проблему. Не могли бы вы добавить этот ответ, чтобы я мог принять его за вас?   -  person Michael A    schedule 13.05.2015
comment
Я добавил ответ.   -  person Alexei Levenkov    schedule 13.05.2015


Ответы (1)


Есть хороший шанс, что сборки SharePoint, которые вы используете, построены на сборках .Net 2.0/3.5, и вы ссылаетесь на сборки .Net 4.x (или наоборот).

Если последняя версия Framework (4.x) не требуется, можно переключиться на более старую версию.

Для этого измените «Целевая версия» в свойствах проекта на 3.5 с 4.x и проверьте, используете ли вы правильный вариант x86/x64.

Примечание. Я считаю, что SharePoint 2013 должен использовать версию 4.x Framework — убедитесь, что в вашем проекте есть соответствующие сборки и целевая версия. Подробности см. в аналогичном вопросе — Ссылка на Microsoft.SharePoint.dll.

person Alexei Levenkov    schedule 13.05.2015