Problem jest znany i dość powszechnie udokumentowany. Jednak ten Tip jest bardziej dla mnie ;) Jak to zapiszę to będę o tym pamiętał. Chodzi o to, że jak długo nie widzę tego błędu to potem jak wyskakuje to nie wiem co zrobić ;)
Dla przypomnienia, błąd wygląda mniej więcej tak:
The security validation for this page is invalid. Click Back in your Webbrowser, refresh the page, and try your operation again.
A rozwiązania są dwa i dwa są proste:
1) Rozwiązanie pierwsze to po prostu opakować kod w:
try { web.AllowUnsafeUpdates = true; } catch(Exception ex) { } finally { web.AllowUnsafeUpdates = false; }
2) Drugie rozwiązanie to na stronie Central Administration, wybrać następującą opcję:Central Administration —> Application Management —-> Web Application Settings –> "turn security validation off" – Rowzwiązanie nie zalecane!!
Zalecane “catch(Exception ex) {}” ?!
Czegoś tutaj nie rozumiem: dlaczego mamy połykać praktycznie wszystkie wyjątki?
Sam try/finally nie wystarczy?
@Bysza
;)
Wystarczy, to w kwesti przypomnienia bylo. Gdybym Ci tam napisal SPContentTypeSealedException to wiedzialbyś o co chodzi? nawet ja bym pewnie zapomniał a potem bym się zastanawiał czy to jest konieczne…
Chciałem tylko zaznaczyć by wyłapywać wyjątki a dokładnie jak będe robił CopyPaste to zmienię wyjątek na konkretny a nie będe się męczył z dodaniem catch(){} co zawsze mnie osobiście drażni.
Ale zeby nie bylo. AllowUnsafeUpdates moze wyzucic:
catch(SPException spe)
{
// handle – jako pierwsze to nie jest Exception… to jest SharePoint Exception. Przed nim umieszczamy takie rzeczy jak SPContentTypeSealedException
}
catch (UnauthorizedAccessException uae)
{
// handle
}
catch (InvalidCastException ice)
{
// handle
}
catch (NullReferenceException nre)
{
// handle
}
do tego trzeba pamiętać o wszystkich innych wyjątkach które może wywalić wasz kod :)
Gutek
Comments are closed.