我使用与WCF集成的企业库验证块.它报告System.Runtime.InteropServices.COMException (0x8000FFFF): Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))我何时使用WIN32 API LogonUser和WindowsIdentity.Impersonate模拟其他用户.在获取加载配置的安全证据时似乎有些不对劲.如果我删除了模拟的编码,它的工作没有任何错误.这些是异常堆栈跟踪的一部分,希望你能给一些帮助.谢谢.
System.Runtime.InteropServices.COMException (0x8000FFFF): 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.GenerateHostEvidence(Type type, Boolean hostCanGenerate)
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.GenerateHostEvidence(Type type, Boolean hostCanGenerate)
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.ClientConfigPaths.GetPaths(String exePath, Boolean includeUserConfig)
at System.Configuration.ClientConfigurationHost.CreateConfigurationContext(String configPath, String locationSubPath)
at System.Configuration.Internal.DelegatingConfigHost.CreateConfigurationContext(String configPath, String locationSubPath)
at System.Configuration.BaseConfigurationRecord.get_ConfigContext()
Run Code Online (Sandbox Code Playgroud)
在我看来,问题是System.Configuration在加载app.config时会进行模拟.我能够通过运行来解决这个问题
ConfigurationManager.GetSection("system.xml/xmlReader");
Run Code Online (Sandbox Code Playgroud)
而不是冒充.这样做会导致后来的模仿成功.
编辑:为了略微澄清,我认为这样做会导致app.config被加载并缓存到内存中,因此导致问题的代码路径只执行一次并使用原始凭据.
| 归档时间: |
|
| 查看次数: |
5954 次 |
| 最近记录: |