Pavel Novotný

.NET Framework, SharePoint, Dynamics CRM, RC Helicopters, Honda VFR CrossRunner

SharePoint 2010 + Linq + anonymní uživatel

Při vytváření webové aplikace na SharePoint 2010 s anonymní přístupem jsem narazil jednu z mnoha nedokumentovaných vlastností SharePointu 2010, kdy po zapnutí anonymního přístupu přestal fungovat LINQ a začaly vznikat chyby při snaze přistupovat k seznamům právě pomocí těchto dotazů.

První pokus byl samozřejmě obalit tuto funkci zobrazující navigaci eskalací oprávnění na systémového uživatele pomocí funkce SPSecurity.RunWithElevatedPrivileges, to ale nikam nevedlo a Linq nepřevzal oprávnění.

image

Nebyl jsem samozřejmě první kdo na to narazil, našel jsem jeden post, který to řeší:

Více...

SharePoint: This page contains content or formatting that is not valid. You can find more information in the affected sections

Tuto pěknou chybu způsobují validátory použité ve vlastní webpartě, chyba vzniká pouze pokud se jedná o stránku pro publikování (publishing page).

SharePoint z neznámého důvodu spustí validace na webpartě při ukládání stránky a nedovolí stránku uložit pokud validace ovládacích prvků neprojde v pořádku. Na tom by nebylo nic divného pokud není specifikovaný atribut ValidationGroup a měla by se kontrolovat logicky celá stránka, ale SharePoint kontroluje validaci i na ovládacích prvcích kde je ValidationGroup specifikovaný.

Na lepší způsob než níže uvedený jsem zatím nepřišel, kdy vypínám validace v případě, že aktuální stránka je v editačním módu:

protected override void CreateChildControls()
{

     // some code

     if (SPContext.Current.FormContext.FormMode == SPControlMode.Edit || 
        SPContext.Current.FormContext.FormMode == SPControlMode.New)

     {
            validator.Enabled = false;
     }

}