Archive for May, 2010

Wyszukanie grup SharePoint dla użytkownika AD

Wednesday, May 12th, 2010

Jeśli tworzymy WebPart na naszą witrynę SharePoint i chcemy sprawdzić do jakich grup SharePoint należy zalogowany użytkownik to intuicyjnie szukamy tej informacji w cechach przypisanych do użytkownika a dokładnie:

SPUser uzytkownik.Groups

Jest to dobry tok myślenia tylko w przypadku, gdy użytkownicy przypisywani są do grupy SharePoint w postaci pojedynczych użytkowników Active Directory a nie Grup AD.

W tym drugim przypadku musimy użyć SPUserToken i SPGroup.ContainsCurrentUser.

Przykład:

SPSite site = new SPSite(“http://sharepoint:100/”);
SPWeb web = site.OpenWeb();

Label label = new Label();

this.Controls.Add(label);
SPUserToken userToken = site.UserToken;
using (SPSite contextSiteColl = new SPSite(“http://sharepoint:100/”, userToken))
{
using (SPWeb contextSite = contextSiteColl.OpenWeb())
{
label.Text += ” Site:” + contextSite.Name;
foreach (SPGroup grupa in contextSite.Groups)
{
if (grupa.ContainsCurrentUser)
{
label.Text += ” Należy do grupy:” + grupa.Name;
}
}

}
}

VSeWSS Service Error: No SharePoint Site exists at the specified URL.

Wednesday, May 12th, 2010

dodatkowo: VSeWSS Service Logging Error: Access to the path ‘Microsoft\VSeWSS 1.3′ is denied.

Przy zmianie środowiska dev na windows 2008 r2 z windows 2003, przy próbie publikacji webparta bezpośrednio z Visual Studio 2008 wyskoczył mi powyższy komunikat.

Dodam, że przy tworzeniu webparta z wizarda, wybrałem full trust (GAC deployment).  Żadne próby typu “Uruchom jako Administrator” nie zadziałały, fakt, że recznie przez gacutils mogłem dodawać, ale przy testowaniu nowego webparta jest to dosyć żmudne.

Sprawdziłem w IIS na jakim użytkowniku działa sobie pula aplikacji VseWss  (W menadżerze IIS -> Application pools).

Próbowałem dodać tego użytkownika do lokalnych administratorów, nie pomogło. Doczytałem chwilę poźniej, że musi on być dodany do grup: WSS_ADMIN_WPG, WSS_RESTRICTED_WPG.  Po dodaniu zadziałało!