- 我有一個命名的網站集,其中FBA位於我使用ActiveDirectoryMembershipProvider。
- 我們有一個服務器場管理員域\管理員。他不是明確的sitecollection管理員。
我創建了一個我在域\管理員帳戶下運行的示例控制檯應用程序。 中的代碼是類似的東西:控制檯中的RunWithElevatedPrivileges在FBA中的奇怪行爲
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();
}
}
控制檯輸出域\管理員,但是我成爲一個存取遭拒例外,當我嘗試將用戶添加到組。 但是,當我運行這與RunWithElevetadPrivileges(根據我讀的所有帖子應該沒有影響控制檯應用程序),並設置AllowUnsafeUpdates = true(同一故事)的代碼順利通過,沒有例外拋出,用戶被添加到組。有趣的是,寫入控制檯輸出的用戶仍然是域\管理員。
所以我的問題是:WTF?有沒有更好的辦法?爲什麼這會發生?有沒有人有這個問題?我應該使用另一個membershipprovider嗎?
小提示:當FBA關閉時,我不會成爲例外。
感謝您的提示。它確實使代碼更清晰。我已經加倍檢查了測試應用程序,並且它始終以當前用戶的身份返回域\管理員。我期望當前用戶將是apppool用戶,然後它將工作,或者它仍然是域\管理員,在這種情況下runwithprivileges和標準調用應該沒有區別。 – 2010-04-30 08:29:00