Usando Community Server (versione 1.1, build 50615) abbiamo (io e Alessandro) rilevato un problema legato alla localizzazione del server (in italiano).
In pratica l'accesso all'archivio mensile dei post di un Blog generava un'eccezione (System.Data.SqlClient.SqlException) nella conversione da char a datetime impedendo la visualizzazione della pagina.
Nel file SqlGenerator.cs (rif. progetto: SqlDataProvider), il metodo
BuildBlogThreadQuery (BlogThreadQuery query, string databaseOwner)
della classe CommunityServer.Data.SqlGenerator presentava la seguente implementazione:
else if(query.BlogThreadType == BlogThreadType.Month) { sb.AppendFormat(" and (B.BloggerTime >= '{0}' and B.BloggerTime < '{1}') ", safeDate, safeDate.AddMonths(1)); }
Dove "safeDate" - di tipo DateTime - veniva concatenato implicitamente ad una stringa (richiamando in modo invisibile il metodo ToString(), come documentato da Stefano Mostarda) e producendo un risultato non compatibile con T-SQL (oltre alla solita inversione di giorno e mese, il problema era nell'uso del "." come separatore nell'orario).
Il fix è stato una semplice formalizzazione della conversione da data a stringa, optando per il formato "yyyMMdd" (nell'estrazione dei post di un mese non si è ritenuto necessario specificare l'orario) che ha portato il precedente codice (localizzato alla riga 281 nella build indicata) a diventare:
else if(query.BlogThreadType == BlogThreadType.Month) { sb.AppendFormat(" and (B.BloggerTime >= '{0}' and B.BloggerTime < '{1}') ", safeDate<strong>.ToString("yyyyMMdd")</strong>, safeDate.AddMonths(1)<strong>.ToString("yyyyMMdd")</strong>); }
Rebuild e... il gioco è fatto, come potete vedere in quest'altro blog (che usa la versione incriminata di CS).
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Enumeratori: flags and extensions, il 17 febbraio 2010 alle 23:38
- .NET Framework 4.0 beta 2: Visual Studio 2010, il 19 ottobre 2009 alle 21:23
- .NET Framework 4.0 beta 1: Visual Studio 2010 e Training Kit disponibili per tutti, il 21 maggio 2009 alle 09:25
- .NET Framework 4.0 beta 1: Visual Studio 2010, il 18 maggio 2009 alle 16:39
- L'ordine dei parametri in alcune classi del framework, il 21 agosto 2008 alle 18:47
- The Developer Highway Code, il 19 agosto 2008 alle 14:19