J'ai créé un programme pour nos utilisations à utiliser sur leurs ordinateurs de bureau. Quand ils essaient d'utiliser le programme, ils lèvent une exception du constructeur SqlConnection qui dit que 'l'accès au registre n'est pas autorisé'.SqlConnection échoue en raison d'autorisations du journal des événements
Notre administrateur réseau a restreint l'accès des utilisateurs au registre pour empêcher les gens d'installer des logiciels personnels. De plus, je n'ai pas besoin d'écrire dans le journal des événements. Y a-t-il une raison pour dire à SqlConnection de ne pas essayer d'accéder au journal des événements?
Code Source:
string _ConnectionString = "server=our_server_name; initial catalog=our_db_name; integrated security=true;"
...
using (var connection = new SqlConnection(_ConnectionString)) <-- exception thrown here
{
connection.Open();
...
}
Exception
System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception.
---> System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SqlConnectionFactory' threw an exception.
---> System.TypeInitializationException: The type initializer for 'System.Data.SqlClient.SqlPerformanceCounters' threw an exception.
---> System.Security.SecurityException: Requested registry access is not allowed.
at Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable)
at System.Diagnostics.PerformanceCounterLib.FindCustomCategory(String category, PerformanceCounterCategoryType& categoryType)
at System.Diagnostics.PerformanceCounterLib.IsCustomCategory(String machine, String category)
at System.Diagnostics.PerformanceCounter.InitializeImpl()
at System.Diagnostics.PerformanceCounter.set_RawValue(Int64 value)
at System.Data.ProviderBase.DbConnectionPoolCounters.Counter..ctor(String categoryName, String instanceName, String counterName, PerformanceCounterType counterType)
at System.Data.ProviderBase.DbConnectionPoolCounters..ctor(String categoryName, String categoryHelp)
at System.Data.SqlClient.SqlPerformanceCounters..ctor()
at System.Data.SqlClient.SqlPerformanceCounters..cctor()
--- End of inner exception stack trace ---
at System.Data.SqlClient.SqlConnectionFactory..cctor()
--- End of inner exception stack trace ---
at System.Data.SqlClient.SqlConnection..cctor()
--- End of inner exception stack trace ---
at System.Data.SqlClient.SqlConnection..ctor()
at System.Data.SqlClient.SqlConnection..ctor(String connectionString, SqlCredential credential)
at OurProgram.Form1.UpdateStuff() in C:\path_to_project\Form1.cs:line 111
Merci
Veuillez fournir plus d'informations sur l'exception réelle. De quel type d'exception s'agit-il (c'est-à-dire l'exception interne de 'System.TypeInitializationException')? Quel est le message d'erreur complet? –
Il ressemble en fait à .net 4.6 il y a du code pour supporter votre bug particulier http://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/PerformanceCounterLib.cs,dceb05845090520b, l'exception que vous avez là EST être attrapé. Au moins dans .net 4.6. – Aron
@roryap, d'après ce que j'ai posté, vous pouvez voir l'exception est une exception SecurityException et il existe des exceptions internes de type TypeInitializationException. J'ai copié tout ce qui se trouvait dans la boîte de dialogue. Donc je n'ai plus de détails sur l'exception à inclure. –