Skip to content

Commit 410095d

Browse files
authored
Merge pull request #399 from Resgrid/develop
RE1-T121 console fixes
2 parents e905a1e + 5c84952 commit 410095d

2 files changed

Lines changed: 18 additions & 20 deletions

File tree

Workers/Resgrid.Workers.Console/Program.cs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,6 @@ private static void LoadConfiguration(string[] args)
146146

147147
private static void SetConnectionString()
148148
{
149-
var config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
150-
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
151-
152149
string configPath = Configuration["AppOptions:ConfigPath"];
153150

154151
if (string.IsNullOrWhiteSpace(configPath))
@@ -182,13 +179,10 @@ private static void SetConnectionString()
182179
}
183180
}
184181

185-
if (connectionStringsSection.ConnectionStrings["ResgridContext"] != null)
186-
connectionStringsSection.ConnectionStrings["ResgridContext"].ConnectionString = DataConfig.ConnectionString;
187-
else
188-
connectionStringsSection.ConnectionStrings.Add(new ConnectionStringSettings("ResgridContext", DataConfig.ConnectionString));
189-
190-
config.Save();
191-
System.Configuration.ConfigurationManager.RefreshSection("connectionStrings");
182+
// Previously this also persisted ConnectionStrings to the on-disk .dll.config via config.Save().
183+
// That fails on read-only / non-root hardened (DHI) containers and is unnecessary: the in-memory
184+
// injection above is what downstream ConfigurationManager.ConnectionStrings consumers read
185+
// (this mirrors the web apps' Startup, which only inject in-memory and never write to disk).
192186
collection.SetValue(settings, true);
193187
element.SetValue(settings, true);
194188

Workers/Resgrid.Workers.Events.Console/Program.cs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -111,20 +111,24 @@ private static void LoadConfiguration(string[] args)
111111

112112
private static void SetConnectionString()
113113
{
114-
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
115-
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
114+
ConfigProcessor.LoadAndProcessEnvVariables(Configuration.AsEnumerable());
116115

117-
//var test = Configuration["ConnectionStrings:ResgridContext"];
116+
// Inject the connection string into the in-memory ConfigurationManager.ConnectionStrings
117+
// collection for legacy consumers. We intentionally do NOT persist the .dll.config to disk
118+
// via config.Save(): that fails on read-only / non-root hardened (DHI) containers. This
119+
// mirrors the web apps' Startup, which only inject in-memory and never write to disk.
120+
var settings = ConfigurationManager.ConnectionStrings;
121+
var element = typeof(ConfigurationElement).GetField("_readOnly", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
122+
var collection = typeof(ConfigurationElementCollection).GetField("_readOnly", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
118123

119-
ConfigProcessor.LoadAndProcessEnvVariables(Configuration.AsEnumerable());
124+
element.SetValue(settings, false);
125+
collection.SetValue(settings, false);
120126

121-
if (connectionStringsSection.ConnectionStrings["ResgridContext"] != null)
122-
connectionStringsSection.ConnectionStrings["ResgridContext"].ConnectionString = DataConfig.ConnectionString;
123-
else
124-
connectionStringsSection.ConnectionStrings.Add(new ConnectionStringSettings("ResgridContext", DataConfig.ConnectionString));
127+
if (settings["ResgridContext"] == null)
128+
settings.Add(new ConnectionStringSettings("ResgridContext", DataConfig.ConnectionString));
125129

126-
config.Save();
127-
ConfigurationManager.RefreshSection("connectionStrings");
130+
collection.SetValue(settings, true);
131+
element.SetValue(settings, true);
128132
}
129133
}
130134
}

0 commit comments

Comments
 (0)