當我們嘗試通過PsExec在遠程計算機上運行.Net 4.0應用程序時,我們看到一個間歇性問題。 目標計算機是安裝了.Net 4.0和.Net 4.5的Windows Server 2008 SP2 64位。使用.Net應用程序通過PsExec發生間歇性災難性故障例外
我已經被告知,自從.Net 4.5安裝以來,這種情況一直在發生,但是我對這個項目很陌生,所以我不能確定這是什麼時候問題開始發生。
是沒有做這個代碼:
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
return (ParameterData)config.GetSection("ParameterData");
這裏的堆棧跟蹤:
System.Configuration.ConfigurationErrorsException: An error occurred loading a configuration file: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)) ---> System.Runtime.InteropServices.COMException: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
at System.Security.Policy.PEFileEvidenceFactory.GetLocationEvidence(SafePEFileHandle peFile, SecurityZone& zone, StringHandleOnStack retUrl)
at System.Security.Policy.PEFileEvidenceFactory.GenerateLocationEvidence()
at System.Security.Policy.PEFileEvidenceFactory.GenerateEvidence(Type evidenceType)
at System.Security.Policy.AssemblyEvidenceFactory.GenerateEvidence(Type evidenceType)
at System.Security.Policy.Evidence.GetHostEvidenceNoLock(Type type)
at System.Security.Policy.Evidence.GetHostEvidence(Type type, Boolean markDelayEvaluatedEvidenceUsed)
at System.Security.Policy.AppDomainEvidenceFactory.GenerateEvidence(Type evidenceType)
at System.Security.Policy.Evidence.GetHostEvidenceNoLock(Type type)
at System.Security.Policy.Evidence.RawEvidenceEnumerator.MoveNext()
at System.Security.Policy.Evidence.EvidenceEnumerator.MoveNext()
at System.Configuration.ClientConfigPaths.GetEvidenceInfo(AppDomain appDomain, String exePath, String& typeName)
at System.Configuration.ClientConfigPaths.GetTypeAndHashSuffix(AppDomain appDomain, String exePath)
at System.Configuration.ClientConfigPaths..ctor(String exePath, Boolean includeUserConfig)
at System.Configuration.ClientConfigurationHost.get_ConfigPaths()
at System.Configuration.ClientConfigurationHost.GetStreamName(String configPath)
at System.Configuration.BaseConfigurationRecord.InitConfigFromFile()
--- End of inner exception stack trace ---
at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
at System.Configuration.Configuration..ctor(String locationSubPath, Type typeConfigHost, Object[] hostInitConfigurationParams)
at System.Configuration.ClientConfigurationHost.OpenExeConfiguration(ConfigurationFileMap fileMap, Boolean isMachine, ConfigurationUserLevel userLevel, String exePath)
at System.Configuration.ConfigurationManager.OpenExeConfigurationImpl(ConfigurationFileMap fileMap, Boolean isMachine, ConfigurationUserLevel userLevel, String exePath, Boolean preLoad)
at System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel userLevel)
在我們的自動化測試版本部署過程這是執行。我已經能夠將它解釋爲執行上述代碼的簡單可執行文件,並且我從Windows 7開發機器調用PsExec,但問題是間歇性的。 如果我在PsExec的調用之間等待幾分鐘,似乎會更頻繁地發生。我今天開始考慮這個問題,並且能夠在早上很好地複製它,但在下午不太容易。
我也看到了類似的警告事件日誌:
的Windows檢測到您的註冊表文件仍在由其他應用程序或服務的使用。該文件現在將被卸載。之後保存您的註冊表文件的應用程序或服務可能無法正常運行。
詳細信息 - 1個用戶註冊表句柄從\註冊\用戶\糠泄露: 處理5568()已開通鍵\ REGISTRY \ USER \糠
我不知道該事件日誌錯誤是如何相關例外,如果有的話。
的PSEXEC命令行是:PSEXEC/ACCEPTEULA \\ myServerName -d「path_to_exe」
我想知道,如果它與用戶配置文件服務的一個問題,所以我在想打電話時不加載配置文件PsExec,但由於它是如此的間歇性,我不知道如何知道我是否修復了它。 搜索互聯網顯示,有些人認爲這可能與模仿有關,但沒有什麼直接符合我的情況。
有沒有人看過類似的東西?這真的很奇怪。
謝謝! 菲爾
錯誤代碼是沒有意義的,這是一個環境問題。片狀網絡連接和惡意反惡意軟件應該位於列表頂部。實際的代碼位於CLR內部,請致電Microsoft支持部門以獲取更好的理論。 –