У меня есть сервер 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, поэтому результат тот же.
Может быть, есть проблемы с безопасностью?