Skip to content

Commit beb6b6a

Browse files
fabiocavpaulbatum
authored andcommitted
Suppressing external startup types when offline
1 parent 7606164 commit beb6b6a

File tree

4 files changed

+17
-3
lines changed

4 files changed

+17
-3
lines changed

src/WebJobs.Script.WebHost/DefaultScriptHostBuilder.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ public IHost BuildHost(bool skipHostStartup, bool skipHostConfigurationParsing)
2727
{
2828
var builder = new HostBuilder();
2929

30+
if (skipHostStartup)
31+
{
32+
builder.Properties[ScriptConstants.SkipHostInitializationKey] = bool.TrueString;
33+
}
34+
3035
if (skipHostConfigurationParsing)
3136
{
3237
builder.ConfigureAppConfiguration((context, _) =>
@@ -42,10 +47,10 @@ public IHost BuildHost(bool skipHostStartup, bool skipHostConfigurationParsing)
4247
{
4348
builder.ConfigureServices(services =>
4449
{
45-
// When offline, we need most general services registered so admin
50+
// When skipping host startup (e.g. offline), we need most general services registered so admin
4651
// APIs can function. However, we want to prevent the ScriptHost from
4752
// actually starting up. To accomplish this, we remove the host service
48-
// responsible for starting the job hst.
53+
// responsible for starting the job host.
4954
var jobHostService = services.FirstOrDefault(p => p.ImplementationType == typeof(JobHostService));
5055
services.Remove(jobHostService);
5156
});

src/WebJobs.Script.WebHost/WebJobsScriptHostService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ private void OnHostInitializing(object sender, EventArgs e)
263263

264264
private IHost BuildHost(bool skipHostStartup = false, bool skipHostJsonConfiguration = false)
265265
{
266+
_logger.LogInformation("Building host: startup suppressed:{skipHostStartup}, configuration suppressed: {skipHostJsonConfiguration}", skipHostStartup, skipHostJsonConfiguration);
266267
return _scriptHostBuilder.BuildHost(skipHostStartup, skipHostJsonConfiguration);
267268
}
268269

src/WebJobs.Script/ScriptConstants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public static class ScriptConstants
5151
public const string LogCategoryMigration = "Host.Migration";
5252

5353
public const string SkipHostJsonConfigurationKey = "MS_SkipHostJsonConfiguration";
54+
public const string SkipHostInitializationKey = "MS_SkipHostInitialization";
5455

5556
// Define all system parameters we inject with a prefix to avoid collisions
5657
// with user parameters

src/WebJobs.Script/ScriptHostBuilderExtensions.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ public static IHostBuilder AddScriptHost(this IHostBuilder builder, ScriptApplic
8080

8181
public static IHostBuilder AddScriptHostCore(this IHostBuilder builder, ScriptApplicationHostOptions applicationHostOptions, Action<IWebJobsBuilder> configureWebJobs = null)
8282
{
83+
var skipHostInitialization = builder.Properties.ContainsKey(ScriptConstants.SkipHostInitializationKey);
84+
8385
builder.ConfigureWebJobs(webJobsBuilder =>
8486
{
8587
// Built in binding registrations
@@ -94,7 +96,12 @@ public static IHostBuilder AddScriptHostCore(this IHostBuilder builder, ScriptAp
9496
.AddTimers()
9597
.AddManualTrigger();
9698

97-
webJobsBuilder.UseScriptExternalStartup(applicationHostOptions.ScriptPath);
99+
if (!skipHostInitialization)
100+
{
101+
// Only set our external startup if we're not suppressing host initialization
102+
// as we don't want to load user assemblies otherwise.
103+
webJobsBuilder.UseScriptExternalStartup(applicationHostOptions.ScriptPath);
104+
}
98105

99106
configureWebJobs?.Invoke(webJobsBuilder);
100107
}, o => o.AllowPartialHostStartup = true);

0 commit comments

Comments
 (0)