2013-05-03 47 views
6

我們在自定義配置節的測試環境中出現奇怪的錯誤。「創建配置節處理程序時發生錯誤」 -

這是一個Windows服務的企業服務器,在這兩個開發和測試環境中的SQL Server 2008 2008 R2的64位上運行。

這部分配置我們共同的代碼庫,只要一個錯誤的處理,並用代碼發佈這樣的發送電子郵件出去有關方面:

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

錯誤細節(全部細節 - 名稱變更爲保護無辜)

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) 

配置文件部分中的問題(與行號):

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> 

這個完全相同的配置在我們的DEV環境中工作正常。據我所知,這些都是相同的環境,兩種服務都在相同的代碼基礎上運行。

任何想法的權限失敗是什麼?我們正在處理的一件事是創建自定義日誌,但即使我們刪除了試圖寫入不存在的自定義日誌的默認發佈者,該過程仍然失敗。

+1

你可以創建一個簡短而完整的程序,它演示了此問題(如果只在測試環境中)? – 2013-05-06 11:57:32

+0

你的意思是你想看到觸發失敗的代碼? – 2013-05-06 13:05:43

+1

我的意思正是我所說的 - 我想要一個簡短但完整的例子,我們可以看到每個部分,在您的測試系統上以相同的方式失敗。這樣我們就可以看到所有可能導致它的東西。 – 2013-05-06 13:06:58

回答

4

事實證明這是一個不起眼的安裝問題。

我們用舊的exe卸載服務,並使用64位的4.0框架重新安裝和問題走了。

0

它在構建配置的框架設置

0

不直接關係到你的情況,但如果你得到了相同的異常,同時試圖運行從網絡共享一個.NET 4.0的應用程序,那麼你需要安裝此修復: http://support.microsoft.com/kb/2580188

相關問題