2013-05-03 12 views
6

Wir erhalten einen seltsamen Fehler in unserer Testumgebung mit einem benutzerdefinierten Konfigurationsabschnitt."Beim Erstellen des Konfigurationsabschnitts-Handlers ist ein Fehler aufgetreten." -

Dies ist für einen Windows-Dienst, der auf einem Enterprise Server 2008 R2 64 Bit mit SQL Server 2008 ausgeführt wird, sowohl in Entwicklungs- als auch in Testumgebungen.

In diesem Abschnitt konfiguriert unsere gemeinsame Code-Bibliothek E-Mail senden an Interessenten aus, wenn ein Fehler behandelt wird und mit Code wie folgt veröffentlicht:

catch(Exception ex) 
{ 
    ExceptionManager.Publish(ex); 
} 

der Fehler Spezifika (ausführlich - Namen geändert, um die Unschuldigen zu bewahren

)
4 <configSections> 
5  <section name="exceptionManagement" 
6    type="Company.Shared.ExceptionManagement.ExceptionManagerSectionHandler, Company.Shared" /> 
7 </configSections> 
8 <exceptionManagement> 
9  <publisher assembly="Company.Shared" type="Company.Shared.ExceptionManagement.DefaultPublisher" 
10     logName="CPODSOracleDataExchange" applicationName="CPODSOracleDataExchange Service" /> 
11  <publisher assembly="Company.Shared" type="Company.Shared.ExceptionManagement.ExceptionManagerSMTPPublisher" 
12     from="[email protected]" 
13     defaultRecipients="[email protected],[email protected]" 
14     applicationName="CPODSOracleDataExchange Service" /> 
15 </exceptionManagement> 


1) Exception Information 
********************************************* 
Exception Type: System.Configuration.ConfigurationErrorsException 
Message: An error occurred creating the configuration section handler for exceptionManagement: Request failed. (E:\CITApps\Services\CPODS.OracleDataExchangeService\Company.CPODS.OracleDataExchangeService.exe.Config line 5) 
BareMessage: An error occurred creating the configuration section handler for exceptionManagement: Request failed. 
Filename: E:\CITApps\Services\CPODS.OracleDataExchangeService\Company.CPODS.OracleDataExchangeService.exe.Config 
Line: 5 
Errors: System.Configuration.ConfigurationException[] 
Data: System.Collections.ListDictionaryInternal 
TargetSite: System.Configuration.FactoryRecord FindAndEnsureFactoryRecord(System.String, Boolean ByRef) 
HelpLink: NULL 
Source: System.Configuration 

StackTrace Information 
********************************************* 
    at System.Configuration.BaseConfigurationRecord.FindAndEnsureFactoryRecord(String configKey, Boolean& isRootDeclaredHere) 
    at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject) 
    at System.Configuration.BaseConfigurationRecord.GetSection(String configKey) 
    at Company.Shared.ExceptionManagement.ExceptionManager.Publish(Exception exception, NameValueCollection additionalInfo) 

2) Exception Information 
********************************************* 
Exception Type: System.Security.SecurityException 
Action: Demand 
PermissionType: System.Security.PermissionSet 
FirstPermissionThatFailed: NULL 
PermissionState: <PermissionSet class="System.Security.PermissionSet" 
version="1" 
Unrestricted="true"/> 

Demanded: <PermissionSet class="System.Security.PermissionSet" 
version="1" 
Unrestricted="true"/> 

GrantedSet: 
RefusedSet: 
DenySetInstance: NULL 
PermitOnlySetInstance: <PermissionSet class="System.Security.PermissionSet" 
version="1"> 
<IPermission class="System.Security.Permissions.FileDialogPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Access="Open"/> 
<IPermission class="System.Security.Permissions.IsolatedStorageFilePermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Allowed="ApplicationIsolationByUser" 
UserQuota="1024000"/> 
<IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Flags="Execution"/> 
<IPermission class="System.Security.Permissions.UIPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Window="SafeTopLevelWindows" 
Clipboard="OwnClipboard"/> 
<IPermission class="System.Drawing.Printing.PrintingPermission, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
version="1" 
Level="SafePrinting"/> 
<IPermission class="System.Security.Permissions.MediaPermission, WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
version="1" 
Audio="SafeAudio" 
Video="SafeVideo" 
Image="SafeImage"/> 
<IPermission class="System.Security.Permissions.WebBrowserPermission, WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
version="1" 
Level="Safe"/> 
</PermissionSet> 

FailedAssemblyInfo: NULL 
Method: Void InitWithRestrictedPermissions(System.Configuration.RuntimeConfigurationRecord, System.Configuration.FactoryRecord) 
Zone: NoZone 
Url: 
Message: Request failed. 
Data: System.Collections.ListDictionaryInternal 
TargetSite: System.Object CreateInstance(System.RuntimeType, Boolean, Boolean, Boolean ByRef, System.RuntimeMethodHandleInternal ByRef, Boolean ByRef) 
HelpLink: NULL 
Source: mscorlib 

StackTrace Information 
********************************************* 
    at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) 
    at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) 
    at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) 
    at System.Activator.CreateInstance(Type type, Boolean nonPublic) 
    at System.Configuration.TypeUtil.CreateInstanceWithReflectionPermission(Type type) 
    at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.Init(RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord) 
    at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.InitWithRestrictedPermissions(RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord) 
    at System.Configuration.RuntimeConfigurationRecord.CreateSectionFactory(FactoryRecord factoryRecord) 
    at System.Configuration.BaseConfigurationRecord.FindAndEnsureFactoryRecord(String configKey, Boolean& isRootDeclaredHere) 

Die Konfigurationsdatei betreffende Abschnitt (mit Zeilennummern):

4 <configSections> 
5  <section name="exceptionManagement" 
6    type="Company.Shared.ExceptionManagement.ExceptionManagerSectionHandler, Company.Shared" /> 
7 </configSections> 
8 <exceptionManagement> 
9  <publisher assembly="Company.Shared" type="Company.Shared.ExceptionManagement.DefaultPublisher" 
10     logName="CPODSOracleDataExchange" applicationName="CPODSOracleDataExchange Service" /> 
11  <publisher assembly="Company.Shared" type="Company.Shared.ExceptionManagement.ExceptionManagerSMTPPublisher" 
12     from="[email protected]" 
13     defaultRecipients="[email protected],[email protected]" 
14     applicationName="CPODSOracleDataExchange Service" /> 
15 </exceptionManagement> 

Diese exakt gleiche Konfiguration funktioniert in unserer DEV-Umgebung einwandfrei. Dies sind nach bestem Wissen identische Umgebungen, und beide Dienste laufen unter der gleichen Codebasis.

Irgendwelche Ideen, was die Berechtigungen Fehler ist? Eine Sache, an der wir gerade arbeiten, ist das Erstellen des benutzerdefinierten Protokolls. Selbst wenn wir den Standard-Publisher entfernen, der versucht, in ein benutzerdefiniertes Protokoll zu schreiben, das nicht existiert, schlägt der Prozess dennoch fehl.

+1

Können Sie ein kurzes, aber vollständiges Programm erstellen, das das Problem demonstriert (wenn nur in der Testumgebung)? –

+0

Sie meinen, Sie möchten den Code sehen, der den Fehler auslöst? –

+1

Ich meine genau, was ich sage - ich möchte ein kurzes, aber vollständiges Beispiel, dass wir jeden Teil von sehen können, der auf Ihrem Testsystem in gleicher Weise scheitert. Auf diese Weise können wir alles sehen, was es verursachen könnte. –

Antwort

4

Es stellte sich heraus, dass dies ein obskures Installationsproblem war.

Wir haben den Dienst mit der alten Exe deinstalliert und mit 64-Bit-4.0-Framework neu installiert und das Problem ging weg.

0

Es ist die Rahmeneinstellung in der Build-Konfiguration

0

nicht direkt im Zusammenhang mit Ihrem Szenario, aber wenn Sie die gleiche Ausnahme erhalten, während Sie versuchen, einen .NET 4.0-App von einer Netzwerkfreigabe ausgeführt wird, dann müssen Sie diese installieren Hotfix: http://support.microsoft.com/kb/2580188

Verwandte Themen