Strana eccezione proveniente da OdbcConnection.Open ()

Schiacciando le nostre teste contro il muro qui

Siamo un ISV e abbiamo centinaia di aziende che utilizzano il nostro software senza problemi. Il software è Winforms / C # su .NET 2.0.

Uno dei nostri clienti ha installato il nostro software e si blocca all’avvio su tutte le loro macchine, a parte sul portatile di un ragazzo, dove funziona perfettamente.

Alla chiamata OdbcConnection.Open (), otteniamo la seguente eccezione:

The type initializer for 'System.Transactions.Diagnostics.DiagnosticTrace' threw an exception. at System.Transactions.Diagnostics.DiagnosticTrace.get_Verbose() at System.Transactions.Transaction.get_Current() at System.Data.Common.ADP.IsSysTxEqualSysEsTransaction() at System.Data.Common.ADP.NeedManualEnlistment() at System.Data.Odbc.OdbcConnection.Open() at OurCompany.OurForm.connectionTestWorker_DoWork(Object sender) 

Questo ha una InnerException:

 Configuration system failed to initialize at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey) at System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(String sectionName) at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName) at System.Configuration.ConfigurationManager.GetSection(String sectionName) at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName) at System.Diagnostics.DiagnosticsConfiguration.GetConfigSection() 

Google dice semplicemente “app.config è sintatticamente non corretto, ricostruilo”, ma lo stesso app.config funziona bene su centinaia di altre macchine.

Ecco app.config, come richiesto:

     
http://ourdomain.com/OurService.asmx

Una riparazione di .NET Framework non ha risolto questo problema. Sono a una perdita totale. Qualche idea?

Controllare machine.config e user.config. Insieme a app.config, questi sono i 3 che compongono le sezioni di configurazione .

Reflector mostra che EnsureInit ha 2 percorsi di eccezione:

 catch (Exception exception) { this._initError = new ConfigurationErrorsException(SR.GetString("Config_client_config_init_error"), exception); throw this._initError; } catch { this._initError = new ConfigurationErrorsException(SR.GetString("Config_client_config_init_error")); throw this._initError; } 

Dal momento che il 2 ° gestirà solo un’eccezione non CLS , direi che stai colpendo il primo. In questo caso, probabilmente dovrai passare in modo ricorsivo a InnerException per ottenere tutti i dettagli.

Solo per riferimento futuro di qualcuno, ho avuto questo problema con un’app locale che stavo sviluppando sul mio desktop e ho scoperto che il problema era semplicemente che avevo sbagliato il caso. Una volta risolto, funzionava come un incantesimo.

Risolto ciò sovrascrivendo machine.config con una copia funzionante conosciuta da un’altra macchina con lo stesso livello SP / patch.

Ho avuto questo stesso errore si verificano quando si tenta di aprire una connessione OLE DB con ASP / VB.NET 3.5 SP1. Se aggiungo il mio URL all’elenco dei siti attendibili in IE, l’errore scompare e la connessione si apre correttamente. Non so se questo risolverà le cose in altri browser.