Errori WCF “poco chiari”

Ormai lavoro sempre attraverso servizi WCF per tre principali motivi:

  • Spesso mi trovo a dover delocalizzare geograficamente i miei programmi per cui avere l’accesso ai dati vicino al DB non va mai male Occhiolino
  • Non devo installare la connessione al DB a tutte le macchine client (attualmente uso Oracle XE come DB)
  • Se devo cambiare qualcosa, spesso il problema è lato servizi e posso rimediare senza “disturbare” gli utenti.


Purtroppo spesso WCF è criptico nella segnalazione degli errori e molto frequentemente ritorna una eccezione del tipo “The connection was closed unexpectedly” Perplesso che non aiuta molto nella soluzione del problema, anche se ho incluso la seguente voce nel file di configurazione:

<serviceDebug includeExceptionDetailInFaults="true" />

All’ennesimo errore ho “googlato” un po’ scoprendo questa pagina che spiega come abilitare e analizzare la traccia dei servizi WCF.
“Basta” aggiungere una parte di configurazione al web.config del servizio

<system.diagnostics>
    <trace autoflush="true" />
    <sources>
            <source name="System.ServiceModel" 
                    switchValue="Information, ActivityTracing"
                    propagateActivity="true">
            <listeners>
               <add name="sdt" 
                   type="System.Diagnostics.XmlWriterTraceListener" 
                   initializeData= "SdrConfigExample.e2e" />
            </listeners>
         </source>
    </sources>
</system.diagnostics>

sulla pagina sopra riportata trovate tutte le possibili configuazione del tracing.Vorrei solo sottolineare che l’attributo “initializeData” consente di definire il nome del file di trace e può essere un path completo, nel caso venga utile e che l’attributo “switchValue” permette di decidere il livello di tracing desiderato.Il file di trace così prodotto può essere aperto con l’utility “SvcTraceViewer” che organizza il file in maniera molto più leggibile.Alla fine il vero problema era “Maximum number of items that can be serialized or deserialized in an object graph is '65536'”, risolto aggiungendo la seguente configurazione alla sezione del serviceBehaviors:

<dataContractSerializer maxItemsInObjectGraph="2147483647" />

Spesso nelle mie LOB applications mi trovo a dover gestire messaggi belli “cicciotti”… ma questo potrebbe essere materiale per un altro post Con la lingua fuori

Tag di Technorati: ,

Username e organizzazione sbagliata in Visual Studio 2010

Settimana di ferragosto = un po’ più di tempo per le “cavolate” non core business Occhiolino

Ogni volta che lanciavo Visual Studio 2010 mi dava fastidio non vedere le informazioni corrette della registrazione, ma era un fastidio facilmente sopportabile. A bocca aperta

image

Oggi ho trovato un post che spiega come risolvere il problema:

Per le macchine a 64 bit:

cambiate a vostro piacimento le seguenti chiavi:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Registration\UserName
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\RegisteredOrganization

e poi, da una console di amministrazione, lanciate il seguente comando: "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" /setup

Per le macchine a 32 bit:

cambiate a vostro piacimento le seguenti chiavi:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Registration\UserName
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\RegisteredOrganization

e poi, da una console di amministrazione, lanciate il seguente comando: "C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" /setup

Happy developing to all! Con la lingua fuori

«agosto»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910