Ошибка смещения UTC при установке пакета службы Sensenet через проверку подлинности SQL Server - PullRequest
0 голосов
/ 17 октября 2018

Последние пару дней я пытался установить пакет службы sensenet с помощью SQL-аутентификации сервера.Ранее я мог успешно установить пакет через встроенную систему безопасности Windows, но выбрал проверку подлинности SQL Server.На данный момент Sensenet поддерживает только базы данных MS SQL, и именно с этим я и поехал.Я создал бесплатную базу данных MS SQL в AWS RDS без какого-либо предпочтения часового пояса, зоны доступности (us-east-1, но не указал, хочу ли я 1a, 1b, 1c и т. Д.) И все настройки по умолчанию.Читая из документов, он говорит, что по умолчанию он устанавливает мой часовой пояс как UTC, а в моей консоли созданный часовой пояс для моего экземпляра БД - GMT-400.Часовой пояс на моем локальном компьютере установлен на восточное стандартное время (UTC-05: 00).Теперь это где проблема возникает.

После выполнения шагов по установке пакета обслуживания и созданию решения я перешел в папку bin, в которой находится SnAdmin.exe, открыл командную строку в режиме администратора и набрал:

\snadmin install-services dataSource:some-amazon-endpoint.com initialCatalog:someDatabase 
username:usernameToLoginInServer password:passwordToLoginInServer dbusername:nameOfUserInSomeDatabase 
dbpassword:passwordOfUserInSomeDatabase

Все эти переменные необходимы для активации аутентификации SQL Server.Это трассировка стека, которую я получил после входа в фазу выполнения 2.

ApplicationException: Phase terminated with error: The UTC time represented when the offset is applied must be between year 0 and 10,000.
Parameter name: offset
   at SenseNet.Packaging.PackageManager.ExecuteCurrentPhase(Manifest manifest, ExecutionContext executionContext) in E:\BuildAgent\_work\63\s\src\ContentRepository\Packaging\PackageManager.cs:line 165
   at SenseNet.Packaging.PackageManager.Execute(String packagePath, String targetPath, Int32 currentPhase, String[] parameters, TextWriter console) in E:\BuildAgent\_work\63\s\src\ContentRepository\Packaging\PackageManager.cs:line 71
   at SenseNet.Tools.SnAdmin.SnAdminRuntime.ExecutePhase(String packagePath, String targetDirectory, Int32 phase, String[] parameters, String logFilePath, Boolean help, Boolean schema) in E:\BuildAgent\_work\63\s\src\Tools\SnAdminRuntime\SnAdminRuntime.cs:line 191
---- Inner Exception:
ArgumentOutOfRangeException: The UTC time represented when the offset is applied must be between year 0 and 10,000.
Parameter name: offset
   at System.DateTimeOffset.ValidateDate(DateTime dateTime, TimeSpan offset)
   at System.DateTimeOffset..ctor(DateTime dateTime)
   at SenseNet.ContentRepository.Storage.Caching.SnMemoryCache.Insert(String key, Object value, CacheDependency dependencies) in E:\BuildAgent\_work\63\s\src\Storage\Caching\SnMemoryCache.cs:line 49
   at SenseNet.ContentRepository.Storage.DataBackingStore.CacheNodeHead(NodeHead head, String idKey, String pathKey) in E:\BuildAgent\_work\63\s\src\Storage\DataBackingStore.cs:line 136
   at SenseNet.ContentRepository.Storage.DataBackingStore.GetNodeHead(Int32 nodeId) in E:\BuildAgent\_work\63\s\src\Storage\DataBackingStore.cs:line 65
   at SenseNet.ContentRepository.User.get_Administrator() in E:\BuildAgent\_work\63\s\src\ContentRepository\User.cs:line 47
   at SenseNet.ContentRepository.Security.DesktopAccessProvider.get_CurrentUser() in E:\BuildAgent\_work\63\s\src\ContentRepository\Security\DesktopAccessProvider.cs:line 36
   at SenseNet.ContentRepository.Storage.Security.AccessProvider.ChangeToSystemAccount() in E:\BuildAgent\_work\63\s\src\Storage\Security\AccessProvider.cs:line 45
   at SenseNet.ContentRepository.Security.DesktopAccessProvider.GetCurrentUser() in E:\BuildAgent\_work\63\s\src\ContentRepository\Security\DesktopAccessProvider.cs:line 52
   at SenseNet.ContentRepository.Storage.Security.AccessProvider.ChangeToSystemAccount() in E:\BuildAgent\_work\63\s\src\Storage\Security\AccessProvider.cs:line 45
   at SenseNet.ContentRepository.RepositoryInstance.DoStart() in E:\BuildAgent\_work\63\s\src\ContentRepository\RepositoryInstance.cs:line 141
   at SenseNet.ContentRepository.RepositoryInstance.Start(RepositoryStartSettings settings) in E:\BuildAgent\_work\63\s\src\ContentRepository\RepositoryInstance.cs:line 107
   at SenseNet.ContentRepository.Repository.Start(RepositoryStartSettings settings) in E:\BuildAgent\_work\63\s\src\ContentRepository\Repository.cs:line 55
   at SenseNet.Packaging.Steps.StartRepository.Execute(ExecutionContext context) in E:\BuildAgent\_work\63\s\src\ContentRepository\Packaging\Steps\StartRepository.cs:line 55
   at SenseNet.Packaging.PackageManager.ExecuteCurrentPhase(Manifest manifest, ExecutionContext executionContext) in E:\BuildAgent\_work\63\s\src\ContentRepository\Packaging\PackageManager.cs:line 112

===============================================================================
SnAdmin stopped with error.

Быстрый обходной путь

Изменение локального часового пояса на моей машине на UTC избавило отошибка.Это не идеально, потому что я хотел бы использовать правильный часовой пояс, который автоматически применяется моей машиной.Я просто не понимаю, почему происходит сбой, когда мой часовой пояс EST, так как я не уверен, имеет ли это отношение к sensenet или самому AWS.Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 02 ноября 2018

Я не мог комментировать, поэтому я публикую это здесь.Я должен был установить время, чтобы выровнять UTC без смещения.Разница может быть связана с DST и вашим местоположением.В любом случае, я подумал, что это может кому-то помочь.Надеюсь, разработчик знает об этом (я постараюсь связаться с ними, чтобы убедиться).

Редактировать: Опубликован выпуск github .

0 голосов
/ 17 ноября 2018

Мы думаем, что проблема заключалась в том, что мы использовали неправильное максимальное значение DateTime при вставке объекта в кэш.Исправление уже опубликовано в версии 7.4.1 , где мы используем максимальное значение DateTimeOffset.

0 голосов
/ 26 октября 2018

Я искал всю сеть в поисках любой информации, связанной с этой проблемой.Хотя я устанавливаю sensenet немного по-другому, я подумал, что это может помочь.Я устанавливаю sensenet 7.4 с помощью nuget sensenet.services.install в проекте MVC.У меня была похожая проблема во время установки.

15:41:24.9333   startIndexingEngine: False
15:41:24.9333   indexPath: C:\Users\username\Source\repos\demo\demo\App_Data\LocalIndex
15:41:28.7483   ApplicationException: Phase terminated with error: The UTC time represented when the offset is applied must be between year 0 and 10,000.
Parameter name: offset
   at SenseNet.Packaging.PackageManager.ExecuteCurrentPhase(Manifest manifest, ExecutionContext executionContext) in E:\BuildAgent\_work\63\s\src\ContentRepository\Packaging\PackageManager.cs:line 165
   at SenseNet.Packaging.PackageManager.Execute(String packagePath, String targetPath, Int32 currentPhase, String[] parameters, TextWriter console) in E:\BuildAgent\_work\63\s\src\ContentRepository\Packaging\PackageManager.cs:line 71
   at SenseNet.Tools.SnAdmin.SnAdminRuntime.ExecutePhase(String packagePath, String targetDirectory, Int32 phase, String[] parameters, String logFilePath, Boolean help, Boolean schema) in E:\BuildAgent\_work\63\s\src\Tools\SnAdminRuntime\SnAdminRuntime.cs:line 191
---- Inner Exception:
ArgumentOutOfRangeException: The UTC time represented when the offset is applied must be between year 0 and 10,000.
Parameter name: offset
   at System.DateTimeOffset.ValidateDate(DateTime dateTime, TimeSpan offset)
   at System.DateTimeOffset..ctor(DateTime dateTime)
   at SenseNet.ContentRepository.Storage.Caching.SnMemoryCache.Insert(String key, Object value, CacheDependency dependencies) in E:\BuildAgent\_work\63\s\src\Storage\Caching\SnMemoryCache.cs:line 49
   at SenseNet.ContentRepository.Storage.DataBackingStore.CacheNodeHead(NodeHead head, String idKey, String pathKey) in E:\BuildAgent\_work\63\s\src\Storage\DataBackingStore.cs:line 136
   at SenseNet.ContentRepository.Storage.DataBackingStore.GetNodeHead(Int32 nodeId) in E:\BuildAgent\_work\63\s\src\Storage\DataBackingStore.cs:line 65
   at SenseNet.ContentRepository.User.get_Administrator() in E:\BuildAgent\_work\63\s\src\ContentRepository\User.cs:line 47
   at SenseNet.ContentRepository.Security.DesktopAccessProvider.get_CurrentUser() in E:\BuildAgent\_work\63\s\src\ContentRepository\Security\DesktopAccessProvider.cs:line 36
   at SenseNet.ContentRepository.Storage.Security.AccessProvider.ChangeToSystemAccount() in E:\BuildAgent\_work\63\s\src\Storage\Security\AccessProvider.cs:line 45
   at SenseNet.ContentRepository.Security.DesktopAccessProvider.GetCurrentUser() in E:\BuildAgent\_work\63\s\src\ContentRepository\Security\DesktopAccessProvider.cs:line 52
   at SenseNet.ContentRepository.Storage.Security.AccessProvider.ChangeToSystemAccount() in E:\BuildAgent\_work\63\s\src\Storage\Security\AccessProvider.cs:line 45
   at SenseNet.ContentRepository.RepositoryInstance.DoStart() in E:\BuildAgent\_work\63\s\src\ContentRepository\RepositoryInstance.cs:line 141
   at SenseNet.ContentRepository.RepositoryInstance.Start(RepositoryStartSettings settings) in E:\BuildAgent\_work\63\s\src\ContentRepository\RepositoryInstance.cs:line 107
   at SenseNet.ContentRepository.Repository.Start(RepositoryStartSettings settings) in E:\BuildAgent\_work\63\s\src\ContentRepository\Repository.cs:line 55
   at SenseNet.Packaging.Steps.StartRepository.Execute(ExecutionContext context) in E:\BuildAgent\_work\63\s\src\ContentRepository\Packaging\Steps\StartRepository.cs:line 55
   at SenseNet.Packaging.PackageManager.ExecuteCurrentPhase(Manifest manifest, ExecutionContext executionContext) in E:\BuildAgent\_work\63\s\src\ContentRepository\Packaging\PackageManager.cs:line 112

15:41:28.9122   ===============================================================================
15:41:28.9132   SnAdmin stopped with error.

Основываясь на работе вокруг "Luis Averhoff", я обнаружил, что если вы устанавливаете с использованием этого метода;Вы можете завершить установку, установив для локальных часов значение utc - 1 (время Будапешта)

Я ищу решение, которое не требует обходного решения, но пока это позволит вам установить sensenet.

...