【发布时间】:2018-10-23 17:04:03
【问题描述】:
我有一个 clickonce 应用程序,它在生产中运行良好,使用方法:
IsolatedStorageFile.GetUserStoreForApplication()
成功执行。 当我尝试调试我的应用程序时,由于“无法确定调用者的应用程序身份。”as described here
使用此方法时,与应用程序关联的所有程序集都使用相同的隔离存储。仅当可以确定应用程序身份时才能使用此方法 - 例如,当应用程序通过 ClickOnce 部署发布或者是基于 Silverlight 的应用程序时。如果您尝试在基于 ClickOnce 或 Silverlight 的应用程序之外使用此方法,您将收到一个 IsolatedStorageException 异常,因为无法确定调用者的应用程序标识。
我的问题是如何使用IsolatedStorageFile.GetUserStoreForApplication() 并无异常地调试应用程序?
- 可能做一些检查?
- 还是使用自定义应用程序身份?
- 或使用IsolatedStorageFile.GetEnumerator 来获取可用存储?
【问题讨论】:
-
首先检查激活上下文是否为空,这表明该域没有激活上下文意味着无法确定调用者的应用程序身份
-
我还建议抽象出IsolatedStorage,以便可以在隔离的情况下进行测试而不会产生连锁反应
-
这里的答案也证明很有帮助stackoverflow.com/a/47694201/5233410
-
谢谢,如果无法执行 GetUserStoreForApplication,我最终会检查 ActivationContext 并回退到 GetUserStoreForAssembly
标签: c# isolatedstorage