我已经被告知,自从.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检测到您的注册表文件仍在被其他应用程序或服务使用。该文件现在将被卸载。保存注册表文件的应用程序或服务可能在以后无法正常运行。
细节 - 从\ Registry \ User \ mySID泄露的1个用户注册表句柄: 进程5568()已打开键\ REGISTRY \ USER \ mySID
我不知道事件日志错误与异常的关系(如果有的话)。
PsExec命令行是:PsExec / accepteula \\ myServerName -d" path_to_exe"
我想知道用户个人资料服务是否存在问题,所以我在考虑在拨打PsExec时没有加载个人资料,但由于它是如此间歇性的,我还是我不知道如果我修好它怎么知道。 搜索互联网表明有些人认为它可能与模仿有关,但没有任何东西与我的情况直接相符。
有没有人见过这样的东西?这真的很奇怪。
谢谢! 菲尔
答案 0 :(得分:1)
如果它在本地运行时有效,但在远程运行时无法运行,则有可能:
使用PsExec时,远程计算机上的程序限制为150MB内存
在远程计算机上运行此命令将允许远程命令使用超过150 MB的内存:
set-item wsman:localhost\Shell\MaxMemoryPerShellMB 2048