Vítejte na blog.vyvojar.cz Přihlásit | Registrovat | Pomoc
Titulní Blogy Fotky Soubory

Mazinův blog o SharePointu

Zpracování chybových zpráv event receiverů při ukládání dokumentů z Office

MS Office používá k ukládání změn v dokumentech otevřených z SharePointu protokol MS-FSSHTTP. Smyslem je neukládat dokument celý, ale pouze změny a šetřit tak čas a přenosové pásmo. Jeho detailní popis můžete najít v tomto článku.

Event receivery umožnují reagovat na události v SharePointu včetně updatů položek v tomto případě ukládaných dokumentů. V rámci událostí ItemUpdating lze provádět nejrůznější kontroly a případně zabránit dokončení operace. Event receiver přitom může vrátit informaci o tom, co se stalo, a proč není možné operaci dokončit.

public override void ItemUpdating(SPItemEventProperties properties){
    properties.ErrorMessage = "Error Message";
    properties.Status = SPEventReceiverStatus.CancelWithError;
}

To se určitě hodí, aby nebyl uživatel zmatený. Bohužel to sebou ale nese jeden problém. Jak uživateli tuto informaci zobrazit? Při aktualizaci položky nebo metadat dokumentu ve webovém UI SharePointu to není problém, uživateli se zobrazí chybové hlášení.

Sice bych si posteskl nad tím, že zobrazené hlášení má podobu standardní SharePointí chyby, takže průměrný uživatel je natolik vyděšen, že si text ani nepřečte a volá support s tím, že “to spadlo…”. Dá se to alespoň trochu řešit přesměrováním uživatele na vlastní stránku s decentnějším podáním chybové hlášky. Horší je, pokud změnu dokumentu nebo jeho vlastností provádí uživatel v Office nástrojích. Tam nic podobného k dispozici nemáme. Office na to reaguje zobrazením informace v pruhu nad dokumentem:

Takto se chovají Office 2010 i 2013 v kombinaci s SharePointem 2010 i 2013. Nicméně v případě SharePointu 2010 uživatel mohl jít na záložku Informace a tam mu Office zobrazil chybovou hlášku, kterou event receiver vrátil. Ne všichni uživatelé to sami našli, ale s trochou pomoci jste je tam navedli a oni si mohli přečíst, co je špatně.

V případě SharePointu 2013 to už bohužel nefunguje. V jeho implementaci synchronizačního protokolu, o kterém jsem psal v úvodu, se z návratové hodnoty synchronizace “ztratil” atribut CoalesceErrorMessage (celý protokol je XML-based), který ji nesl. Úplně nechápu proč, ale je to tak. Jak by řekl Cimrman: “Můžeme s tím nesouhlasit, můžeme proti tomu protestovat, ale to je tak všechno, co se s tím dá dělat”. Smutný obličej

Zveřejněno 12. září 2015 23:00 by mazin

Komentář

Žádné komentáře
Neregistrovaní uživatele nemužou přidávat komentáře.

About mazin

V občance mám v kolonce jméno uvedeno Jan Vaněk. Věnuji se SharePointu přes 8 let. Hlavně jako architekt, programátor a autor pilotů a prototypů. Rád se totiž šťourám v tom, co má SharePoint "pod kapotou". A když narazím na něco zajímavého, napíšu o tom článek. Kromě toho občas přednáším, publikuju na Codeplexu a odpovídám na StackExchange. Jsem MVP, MCT, MCSD, MCITP, MCDBA a Certified Scrum Master.

Syndication

News

  • Web Developer
  • Enterprise Application Developer

  • Microsoft Office SharePoint Server 2007, Application Development
  • Microsoft Windows SharePoint Services 3.0, Application Development
  • Microsoft Office SharePoint Server 2007, Configuration
  • Microsoft Windows SharePoint Services 3.0, Configuration
  • .Net Framework 2.0, Distributed Applications
  • .Net Framework 2.0, Web Applications
  • .Net Framework 2.0, Windows Applications
Powered by Community Server (Personal Edition), by Telligent Systems
Vyvojar.cz na prodej!