Trasferimento BLOB tramite ADO.NET Data Services

Durante l’utilizzo di ADO.NET Data Services vi capiterà sicuramente di dover salvare imamgini o documenti nel database. Se la loro dimensione è superiorer a 64Kb dovete configurare manualmente i parametri dell’host del servizio.

In giro su internet ci sono moltissimi blog che spiegano come farlo, però c’è una nota importantissima da tenere a mente per evitare di perdere ore e ore (o giorni e giorni) inutilmente.

Un esempio tipico di web.config è il seguente:

   1: <system.serviceModel>
   2:   <services>
   3:     <service 
   4:       name="Bolt.DataService.BoltData">
   5:       <endpoint binding="webHttpBinding" contract="System.Data.Services.IRequestHandler"
   6:         bindingConfiguration="webBinding" >
   7:       </endpoint>
   8:     </service>
   9:   </services>
  10:   <bindings>
  11:     <webHttpBinding>
  12:       <binding name="webBinding" maxBufferSize="152428800" maxReceivedMessageSize="152428800" receiveTimeout="00:10:00">
  13:         <readerQuotas maxStringContentLength="152428800" maxArrayLength="152428800" maxBytesPerRead="4096" />
  14:       </binding>
  15:     </webHttpBinding>
  16:   </bindings>
  17:   <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
  18: </system.serviceModel>

la cosa importante è che il name del service (sopra “Bolt.DataService.BoltData”) dev’essere il nome della classe esposta nel .svc con il namespace, altrimenti le modifiche non vengono applicate al servizio e non viene segnalato alcun errore a riguardo.

Primo progetto migrato a VS2010 Beta 2: Perfect !

Wow direi perfetto ! Ho migrato la nostra prima soluzione da VS2008 a VS2010 Beta 2 e considerando che ha 26 progetti tra cui:

  • WPF
  • Silverlight
  • ADO.NET Data Services 1.0
  • Prism Framework

E’ andato al primo colpo ! Ho solo dovuto modificare la security sull’IIS che adesso ha .NET 4.0 come runtime dell’appPool.

Bisogna prestare attenzione ai proxy creati da ADO.NET Data Services 1.5, perchè hanno il model nel namespace generato e quindi lato client bisogna fare alcune modifiche. Vi terrò aggiornati su quest’area che sembra aver subito parecchi miglioramenti.

Stay tuned ;)