mercoledì 17 febbraio 2010

ARF e WCF

In un recente progetto che ho realizzato in WSS con l'ausilio di ARF, un mio collega ha dovuto integrare delle chiamate a servizi WCF, nella fattispecie per recuperare un profilo utente da un applicativo propietario.

Durante il test è incappato in questo errore:

ARF: System.ApplicationException: This operation returned because the timeout period expired. (Exception from HRESULT: 0x800705B4)
at System.Threading.ReaderWriterLock.AcquireWriterLockInternal(Int32 millisecondsTimeout)
at ARF.Web.Utility.SPFileWatcher.Timer_Elapsed(Object sender, ElapsedEventArgs e)

Dopo averci speso una giornata, seguendo alcune mie considerazioni, Alberto ha scoperto che la connessione WCF va chiusa esplicitamente altrimenti va in conflitto con la cache di ARF (ARFCache.cs). Frugando nel codice di ARF si è anche accorto che la cache, utilizzata per cachare i template xslt, ha un timeout impostato a 30 secondi, di default.