Sharepoint get Информация о пользователе - PullRequest
0 голосов
/ 24 мая 2010

У меня есть сервер MOSS, и авторизация пользователей происходит через AD.

Я хочу программно получить некоторую текущую информацию о пользователе, такую ​​как электронная почта, номер фома.

Я сделал следующие шаги: 1) создайте dll с помощью [assembly: AllowPartiallyTrustedCallers] 2) у меня есть класс PhoneBookCL, который наследует System.Web.UI.WebControls.WebParts.WebPart
и я пытаюсь переопределить 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, добавил эту веб-часть в коллекцию веб-частей SP, добавил веб-часть на новую страницу.

При обновлении страницы происходит исключение: неожиданное исключение.

Если я удалю

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

тогда все прекрасно работает.

Я могу создать Label и изменить его свойство Text и другие вещи. Также я попытался унаследовать от Microsoft.SharePoint.WebControls.WebPart, которые на самом деле наследуют пользовательский интерфейс ... WebPart, поэтому результат тот же.

Может быть, есть проблемы с безопасностью?

1 Ответ

2 голосов
/ 24 мая 2010

Эта проблема возникает при развертывании DLL в bin. Я предполагаю, что ваш web.config имеет уровень доверия как WSS_minimal. Минимальное доверие не разрешает доступ к объектной модели.

Следовательно, у вас есть следующие опции:

  1. Развертывание веб-части с использованием wsp с безопасным доступом к пользовательскому коду. Это немного утомительно.
  2. Измените уровень доверия в web.config на Полный.
  3. Разверните dll в GAC.

С точки зрения передового опыта наилучшим вариантом будет развертывание библиотеки DLL в bin с пользовательским кодом безопасности доступа. Но если у вас нет ограничений безопасности, вы можете посмотреть на развертывание в GAC, чтобы упростить задачу.

Ссылка: http://msdn.microsoft.com/en-us/library/ee909485%28office.12%29.aspx

С уважением, Файз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...