8

Ho uno strano errore che causa l'arresto anomalo dell'applicazione. Succede solo quando è compilato e installato tramite click-once e non quando esegue il debug in Visual Studio.Errore SQL Server CE - solo su codice compilato

Visualizzazione del registro eventi mi dà questo:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
    <System> 
    <Provider Name="Windows Error Reporting" /> 
    <EventID Qualifiers="0">1001</EventID> 
    <Level>4</Level> 
    <Task>0</Task> 
    <Keywords>0x80000000000000</Keywords> 
    <TimeCreated SystemTime="2015-04-27T14:51:30.000000000Z" /> 
    <EventRecordID>6471</EventRecordID> 
    <Channel>Application</Channel> 
    <Computer>me.local</Computer> 
    <Security /> 
    </System> 
- <EventData> 
    <Data /> 
    <Data>0</Data> 
    <Data>CLR20r3</Data> 
    <Data>Not available</Data> 
    <Data>0</Data> 
    <Data>calibration certificate builder</Data> 
    <Data>1.0.0.0</Data> 
    <Data>553e4aaa</Data> 
    <Data>System.Data.SqlServerCe</Data> 
    <Data>3.5.8080.0</Data> 
    <Data>4b743b2d</Data> 
    <Data>e3</Data> 
    <Data>0</Data> 
    <Data>System.ArgumentNullException</Data> 
    <Data /> 
    <Data>C:\Users\me\AppData\Local\Temp\WER80E0.tmp.WERInternalMetadata.xml</Data> 
    <Data>C:\Users\me\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_pick_cert_e053eebdc3d787d726058a9b0d3405c6f279444_3b258dcb</Data> 
    <Data /> 
    <Data>0</Data> 
    <Data>e12fbed6-ecec-11e4-b276-24fd52358985</Data> 
    <Data>65</Data> 
    </EventData> 
</Event> 

sono incerto come gestire questo. Ho guardato attraverso il mio codice e non sembra essere un problema lì. Sembra essere all'interno del codice SQL Server CE da qualche parte ma non sono stato in grado di trovarlo.

ho anche spinto la stringa event.ExceptionObject un file di testo e ha ottenuto questo:

System.ArgumentNullException: valore non può essere null. a System.Threading.Monitor.Enter (Object obj) a System.Data.SqlServerCe.SqlCeCommand.Dispose (booleano smaltimento) a System.Data.SqlServerCe.SqlCeCommand.Finalize()

Chiunque può aiutare me lo interpreto?

Ho rimosso l'utilizzo dei servizi SQL CE da altri thread. Ho anche rimosso lo smaltimento della connessione SQL CE e anche i blocchi finally, ma i log degli errori rimangono gli stessi.

Lo smaltimento della connessione causa un problema?

+0

Probabile non direttamente correlato, ma: si sta eliminando il comando SQL (e probabilmente altre risorse come SQLCeConnection) tramite il finalizzatore, invece di averli in un blocco 'using' e di eliminarli quando hai finito con loro. Vorrei anche controllare la tua configurazione per i percorsi, ecc. Che potrebbero essere diversi per la tua app installata e, infine, sospetto che tu stia usando il 'try {....} catch {/ * non fare nulla, nemmeno registrare l'errore * /} 'schema. – Alex

+0

Sì, lo sto facendo e uso il pattern try/catch. Guarderò anche alla connessione della connessione. Grazie. – redned

+0

Non è possibile condividere oggetti di comando e connessione sui thread – ErikEJ

risposta

1

Sto indovinando che si sta tentando di connettersi con il database SQL utilizzando la stringa di connessione di autenticazione di Windows e quella persona non ha accesso al database SQL. Prova a cambiare la stringa di connessione con un ID utente e una password. Modifica da "Data Source=URDATABASE;Initial Catalog=MYDATABASE;Integrated Security=True" a "Data Source=URDATABASE;Initial Catalog=MYDATABASE;Uid=UrUserID;Pwd=MyPassWord;"

+0

Ciao, grazie per la risposta. L'ho appena visto. Sto interrogando un database SQL CE locale e la mia stringa di connessione è: 'Data Source = | DataDirectory | \ MyDatabase.sdf; Dimensione massima del database = 4091' durante l'interrogazione e la sincronizzazione con il database remoto della stringa di connessione 'Data Source = MYIPADDRESS; Catalogo iniziale = MYDATABASE; Persist Security Info = True; User ID = utente; Password = MYPASSWORD'. – redned

Problemi correlati