2013-06-27 3 views
0

우리는 스털링를 사용하여 브라우저 외부 응용 프로그램을 개발하고 우리는 다음과 같은 시나리오가 : 우리가 오픈 편집 할 경우 파일을스털링 데이터베이스 실버 ArgumentOutOfRangeException

  1. 앱 바로 가기
  2. 열 수를 (특정 확장명으로) 응용 프로그램이 열립니다.

문제의 경우 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이 (가) 사용자 코드 에 의해 처리되지 않았습니다. Message = 지정된 인수가 유효한 값 범위를 벗어났습니다. 매개 변수 이름 : basePath 스택 트레이스 : Wintellect.Sterling.IsolatedStorage.PathProvider.GetKeysPath (문자열 basePath, 문자열 databaseName을 입력 TABLETYPE, ISterlingDriver 드라이버) 에서 Wintellect.Sterling.IsolatedStorage.PathProvider._ContractForBasePath (문자열 basePath) 에서 인 Wintellect에서 Wintellect.Sterling.Keys.KeyCollection 2._DeserializeKeys() at Wintellect.Sterling.Keys.KeyCollection 2..ctor (ISterlingDriver 드라이버, Func을 2 resolver) at Wintellect.Sterling.Database.TableDefinition 2..ctor (ISterlingDriver 드라이버에서 .Sterling.IsolatedStorage.IsolatedStorageDriver.DeserializeKeys (유형 유형, 종류는 keyType, IDictionary 사전) , Func을 2 resolver, Func 2 키) at Wintellect.Sterling.Database.BaseDatabaseInstance.CreateTableDefinition [T, TKey] (Func`2 keyFunction) at Waf.Dal.Sterling. Database.OURInternalDB.RegisterTables()에서 Waf.Dal.SterlingService.Starting Wintellect.Sterling.Database.SterlingDatabase.RegisterDatabase [T] (ISterlingDriver 드라이버)에 Wintellect.Sterling.Database.BaseDatabaseInstance.PublishTables (ISterlingDriver 드라이버)에 () Waf.App.App..ctor() 의 InnerException에서 Waf.Dal.AireaStorageHelper.InitializeDatabase() 에서 Waf.Dal.Factory.Sterling.InitializeDatabase() 에서 :

업데이트 : 시도 폴더 값을 바꾸려면

var folder = (Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\MyApp\\").Replace("\\","/"); 

그리고 예외는 사라지지만 원래의 문제는 지속됩니다. 앱의 2 인스턴스가 다른 IsolatedStorages를 사용하고있는 것과 같습니다. 나는 고립 된 스토리지가 동일한 응용 프로그램의 인스턴스간에 공유되지 않는 것을 알게

var folder = (Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\MyApp\\").Replace("\\","/"); 

하지만 : I 업데이트에 배치으로

답변

1

이는 격리 된 저장소 드라이버 내 문제를 해결했습니다.

희망자에게 유용합니다.