Add extension to configure capture startup errors setting which defaults to true #552
This commit is contained in:
parent
ccde330978
commit
1b05fb442e
|
|
@ -13,6 +13,11 @@ namespace Microsoft.AspNet.Hosting
|
||||||
{
|
{
|
||||||
private static readonly string ServerUrlsSeparator = ";";
|
private static readonly string ServerUrlsSeparator = ";";
|
||||||
|
|
||||||
|
public static IWebApplicationBuilder UseCaptureStartupErrors(this IWebApplicationBuilder applicationBuilder, bool captureStartupError)
|
||||||
|
{
|
||||||
|
return applicationBuilder.UseSetting(WebApplicationDefaults.CaptureStartupErrorsKey, captureStartupError ? "true" : "false");
|
||||||
|
}
|
||||||
|
|
||||||
public static IWebApplicationBuilder UseStartup<TStartup>(this IWebApplicationBuilder applicationBuilder) where TStartup : class
|
public static IWebApplicationBuilder UseStartup<TStartup>(this IWebApplicationBuilder applicationBuilder) where TStartup : class
|
||||||
{
|
{
|
||||||
return applicationBuilder.UseStartup(typeof(TStartup));
|
return applicationBuilder.UseStartup(typeof(TStartup));
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
using Microsoft.Extensions.Configuration;
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Hosting
|
namespace Microsoft.AspNet.Hosting
|
||||||
{
|
{
|
||||||
|
|
@ -11,9 +15,15 @@ namespace Microsoft.AspNet.Hosting
|
||||||
|
|
||||||
public static IConfiguration GetDefault(string[] args)
|
public static IConfiguration GetDefault(string[] args)
|
||||||
{
|
{
|
||||||
|
var defaultSettings = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
{ WebApplicationDefaults.CaptureStartupErrorsKey, "true" }
|
||||||
|
};
|
||||||
|
|
||||||
// We are adding all environment variables first and then adding the ASPNET_ ones
|
// We are adding all environment variables first and then adding the ASPNET_ ones
|
||||||
// with the prefix removed to unify with the command line and config file formats
|
// with the prefix removed to unify with the command line and config file formats
|
||||||
var configBuilder = new ConfigurationBuilder()
|
var configBuilder = new ConfigurationBuilder()
|
||||||
|
.AddInMemoryCollection(defaultSettings)
|
||||||
.AddJsonFile(WebApplicationDefaults.HostingJsonFile, optional: true)
|
.AddJsonFile(WebApplicationDefaults.HostingJsonFile, optional: true)
|
||||||
.AddEnvironmentVariables()
|
.AddEnvironmentVariables()
|
||||||
.AddEnvironmentVariables(prefix: WebApplicationDefaults.EnvironmentVariablesPrefix);
|
.AddEnvironmentVariables(prefix: WebApplicationDefaults.EnvironmentVariablesPrefix);
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,29 @@ namespace Microsoft.AspNet.Hosting
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void CaptureStartupErrorsByDefault()
|
||||||
|
{
|
||||||
|
var applicationBuilder = new WebApplicationBuilder()
|
||||||
|
.UseServer(new TestServer())
|
||||||
|
.UseStartup<StartupBoom>();
|
||||||
|
|
||||||
|
// This should not throw
|
||||||
|
applicationBuilder.Build();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void UseCaptureStartupErrorsHonored()
|
||||||
|
{
|
||||||
|
var applicationBuilder = new WebApplicationBuilder()
|
||||||
|
.UseCaptureStartupErrors(false)
|
||||||
|
.UseServer(new TestServer())
|
||||||
|
.UseStartup<StartupBoom>();
|
||||||
|
|
||||||
|
var exception = Assert.Throws<InvalidOperationException>(() => applicationBuilder.Build());
|
||||||
|
Assert.Equal("A public method named 'ConfigureProduction' or 'Configure' could not be found in the 'Microsoft.AspNet.Hosting.Fakes.StartupBoom' type.", exception.Message);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void UseEnvironmentIsNotOverriden()
|
public void UseEnvironmentIsNotOverriden()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,14 @@ namespace Microsoft.AspNet.Hosting.Tests
|
||||||
{
|
{
|
||||||
public class WebApplicationConfigurationTests
|
public class WebApplicationConfigurationTests
|
||||||
{
|
{
|
||||||
|
[Fact]
|
||||||
|
public void DefaultCapturesStartupErrors()
|
||||||
|
{
|
||||||
|
var config = new WebApplicationOptions(WebApplicationConfiguration.GetDefault());
|
||||||
|
|
||||||
|
Assert.True(config.CaptureStartupErrors);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ReadsParametersCorrectly()
|
public void ReadsParametersCorrectly()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue