Hello,
I am trying to setup Devolutions Server in our Docker environment, and it works on the first setup, but then when we destroy the container and bring it up again, this error shows up:
When I check the file in docker, I indeed see that it contains an unexpected value like this: "Guid----xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" instead of only the guid.
Is this normal, or am I missing something?
2026-04-23 14:57:59.225 | Launching Devolutions Server: http://localhost:5000/ 2026-04-23 14:58:00.934 | Unhandled exception. System.InvalidOperationException: Failed to convert configuration value 'Guid----xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' at 'WebAppID' to type 'System.Guid'. 2026-04-23 14:58:00.934 | ---> System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx). 2026-04-23 14:58:00.934 | at System.Guid.GuidResult.SetFailure(ParseFailure failureKind) 2026-04-23 14:58:00.934 | at System.Guid.TryParseExactN[TChar](ReadOnlySpan`1 guidString, GuidResult& result) 2026-04-23 14:58:00.934 | at System.Guid.TryParseGuid[TChar](ReadOnlySpan`1 guidString, GuidResult& result) 2026-04-23 14:58:00.934 | at System.Guid..ctor(String g) 2026-04-23 14:58:00.934 | at System.ComponentModel.GuidConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.Configuration.ConfigurationBinder.TryConvertValue(Type type, String value, String path, Object& result, Exception& error) 2026-04-23 14:58:00.934 | --- End of inner exception stack trace --- 2026-04-23 14:58:00.934 | at Microsoft.Extensions.Configuration.ConfigurationBinder.ConvertValue(Type type, String value, String path) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.Configuration.ConfigurationBinder.GetValue[T](IConfiguration configuration, String key, T defaultValue) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.Configuration.ConfigurationBinder.GetValue[T](IConfiguration configuration, String key) 2026-04-23 14:58:00.934 | at Devolutions.Server.Services.RegisterService..ctor(IConfiguration configuration) 2026-04-23 14:58:00.934 | at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Constructor(Object obj, IntPtr* args) 2026-04-23 14:58:00.934 | at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr) 2026-04-23 14:58:00.934 | at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 2026-04-23 14:58:00.934 | at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitIEnumerable(IEnumerableCallSite enumerableCallSite, RuntimeResolverContext context) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(ServiceIdentifier serviceIdentifier) 2026-04-23 14:58:00.934 | at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(ServiceIdentifier serviceIdentifier, ServiceProviderEngineScope serviceProviderEngineScope) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token) 2026-04-23 14:58:00.934 | at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host) 2026-04-23 14:58:00.934 | at Devolutions.Server.Program.Main(String[] args) 2026-04-23 14:58:02.043 | New-DPSAppSettings: /usr/local/bin/entrypoint.ps1:170 2026-04-23 14:58:02.043 | Line | 2026-04-23 14:58:02.043 | 170 | New-DPSAppsettings -Configuration $Configuration 2026-04-23 14:58:02.043 | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2026-04-23 14:58:02.043 | | Newtonsoft.Json.JsonSerializationException: Error converting value 2026-04-23 14:58:02.043 | | "Guid----xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" to type 2026-04-23 14:58:02.043 | | 'System.Nullable`1[System.Guid]'. Path 'WebAppID', line 28, position 60. 2026-04-23 14:58:02.043 | | ---> System.ArgumentException: Could not cast or convert from 2026-04-23 14:58:02.043 | | System.String to System.Guid. at 2026-04-23 14:58:02.043 | | Newtonsoft.Json.Utilities.ConvertUtils.EnsureTypeAssignable(Object 2026-04-23 14:58:02.043 | | value, Type initialType, Type targetType) at 2026-04-23 14:58:02.043 | | Newtonsoft.Json.Utilities.ConvertUtils.ConvertOrCast(Object 2026-04-23 14:58:02.043 | | initialValue, CultureInfo culture, Type targetType) at 2026-04-23 14:58:02.043 | | Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) --- End of inner exception stack trace --- at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings) at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings) at DPS.Console.Common.Business.Helper.AppSettingsDataStore.ReadAppSettingsFile()
Adding that manually editing that file to only contain the guid, then launching the container again works. So the initial launch of the docker environment seems to put a wrong value in that file (maybe adding the guid value to the file instead of replacing all the value of that file with the guid?)