我们正在使用英镑开发一个浏览器外的应用程序,我们有以下情况:
问题是在案例2中打开的实例似乎有不同的IsolatedStorage并且数据没有被共享,所以我们尝试执行以下操作
var folder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\MyApp\\";
IsolatedStorageDriver driver = new IsolatedStorageDriver(folder,true);
driver.DatabaseName = "sterling";
Database = _engine.SterlingDatabase.RegisterDatabase<OurInternalDB>(driver);
这会产生以下异常:
System.ArgumentOutOfRangeException未被用户代码处理 消息=指定的参数超出了有效值的范围。 参数名称:basePath 堆栈跟踪: 在Wintellect.Sterling.IsolatedStorage.PathProvider._ContractForBasePath(String basePath) 在Wintellect.Sterling.IsolatedStorage.PathProvider.GetKeysPath(String basePath,String databaseName,Type tableType,ISterlingDriver driver) 在Wintellect.Sterling.IsolatedStorage.IsolatedStorageDriver.DeserializeKeys(Type type,Type keyType,IDictionary dictionary) 在Wintellect.Sterling.Keys.KeyCollection
2._DeserializeKeys() at Wintellect.Sterling.Keys.KeyCollection
2..ctor(ISterlingDriver驱动程序,Func2 resolver) at Wintellect.Sterling.Database.TableDefinition
2..ctor(ISterlingDriver驱动程序,Func2 resolver, Func
2键) 在Wintellect.Sterling.Database.BaseDatabaseInstance.CreateTableDefinition [T,TKey](Func`2 keyFunction) 在Waf.Dal.Sterling.Database.OURInternalDB.RegisterTables() 在Wintellect.Sterling.Database.BaseDatabaseInstance.PublishTables(ISterlingDriver驱动程序) 在Wintellect.Sterling.Database.SterlingDatabase.RegisterDatabase [T](ISterlingDriver驱动程序) 在Waf.Dal.SterlingService.Starting() 在Waf.Dal.Factory.Sterling.InitializeDatabase() 在Waf.Dal.AireaStorageHelper.InitializeDatabase() 在Waf.App.App..ctor() InnerException:
更新:我尝试替换文件夹值
var folder = (Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\MyApp\\").Replace("\\","/");
异常消失,但我原来的问题仍然存在,就像应用程序的2个实例使用不同的IsolatedStorage一样。
答案 0 :(得分:1)
当我进行更新时,这解决了我使用隔离存储驱动程序的问题:
var folder = (Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\MyApp\\").Replace("\\","/");
但是,我了解到同一应用程序的实例之间不共享隔离存储。
希望这对某人有用