- У меня есть именованное семейство сайтов, где включен FBA, и я использую ActiveDirectoryMembershipProvider.
- У нас есть администратор фермы домен \ администратор. Он не является администратором собрания сайтов.
Я создал образец консольного приложения, которое запускаю под учетной записью домена \ администратора.
В коде что-то вроде этого:
using (SPSite site = new SPSite(serverUrl))
{
using (SPWeb web = site.OpenWeb())
{
Console.WriteLine(web.CurrentUser.LoginName);
Console.WriteLine(WindowsIdentity.GetCurrent().Name);
string userName = "domain\\testuser";
SPUser spUser = web.EnsureUser(userName);
SPGroup group = web.SiteGroups["GroupName"];
group.AddUser(spUser);
group.Update();
}
}
Вывод консоли - домен \ администратор, однако я становлюсь исключением AccessDenied, когда пытаюсь добавить пользователя в группу.
Однако, когда я запускаю это с RunWithElevetadPrivileges (который, согласно всем прочитанным сообщениям, не должен иметь влияния в консольном приложении) и устанавливаю AllowUnsafeUpdates = true (та же история), код проходит гладко, исключение не выдается, и пользователь добавляется в группу , Интересно то, что пользователь, который записывается в вывод консоли, все еще является доменом \ администратором.
Итак, мой вопрос: WTF? Есть ли способ лучше? Почему это происходит? У кого-нибудь уже была эта проблема? Должен ли я использовать другого membershipprovider?
Небольшая подсказка: когда FBA выключена, я не становлюсь исключением.