MetaPackages 844 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. commit 501dd3924b8e738adfb525876c7af5a477314626
  2. Author: David Fowler <[email protected]>
  3. Date: Fri Nov 16 21:29:18 2018 -0800
  4. Added a method to configure the web host defaults (#298)
  5. - Added ConfigureWebHostDefaults to configure the web specific defaults on the generic host builder.
  6. diff --git a/build/dependencies.props b/build/dependencies.props
  7. index 39b8dbdf02e..ee4e17013bb 100644
  8. --- a/build/dependencies.props
  9. +++ b/build/dependencies.props
  10. @@ -3,31 +3,34 @@
  11. <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
  12. </PropertyGroup>
  13. <PropertyGroup Label="Package Versions">
  14. - <InternalAspNetCoreSdkPackageVersion>3.0.0-build-20181114.5</InternalAspNetCoreSdkPackageVersion>
  15. - <MicrosoftAspNetCoreAspNetCoreModulePackageVersion>3.0.0-alpha1-10742</MicrosoftAspNetCoreAspNetCoreModulePackageVersion>
  16. - <MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion>3.0.0-alpha1-10742</MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion>
  17. - <MicrosoftAspNetCoreDiagnosticsPackageVersion>3.0.0-alpha1-10742</MicrosoftAspNetCoreDiagnosticsPackageVersion>
  18. - <MicrosoftAspNetCoreHostFilteringPackageVersion>3.0.0-alpha1-10742</MicrosoftAspNetCoreHostFilteringPackageVersion>
  19. - <MicrosoftAspNetCoreHostingPackageVersion>3.0.0-alpha1-10742</MicrosoftAspNetCoreHostingPackageVersion>
  20. - <MicrosoftAspNetCoreRoutingPackageVersion>3.0.0-alpha1-10742</MicrosoftAspNetCoreRoutingPackageVersion>
  21. - <MicrosoftAspNetCoreServerIISIntegrationPackageVersion>3.0.0-alpha1-10742</MicrosoftAspNetCoreServerIISIntegrationPackageVersion>
  22. - <MicrosoftAspNetCoreServerIISPackageVersion>3.0.0-alpha1-10742</MicrosoftAspNetCoreServerIISPackageVersion>
  23. - <MicrosoftAspNetCoreServerIntegrationTestingIISPackageVersion>3.0.0-alpha1-10742</MicrosoftAspNetCoreServerIntegrationTestingIISPackageVersion>
  24. - <MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>0.7.0-alpha1-10742</MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>
  25. - <MicrosoftAspNetCoreServerKestrelHttpsPackageVersion>3.0.0-alpha1-10742</MicrosoftAspNetCoreServerKestrelHttpsPackageVersion>
  26. - <MicrosoftAspNetCoreServerKestrelPackageVersion>3.0.0-alpha1-10742</MicrosoftAspNetCoreServerKestrelPackageVersion>
  27. - <MicrosoftAspNetCoreStaticFilesPackageVersion>3.0.0-alpha1-10742</MicrosoftAspNetCoreStaticFilesPackageVersion>
  28. - <MicrosoftExtensionsConfigurationCommandLinePackageVersion>3.0.0-preview-181113-11</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
  29. - <MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>3.0.0-preview-181113-11</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
  30. - <MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>3.0.0-preview-181113-11</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
  31. - <MicrosoftExtensionsConfigurationJsonPackageVersion>3.0.0-preview-181113-11</MicrosoftExtensionsConfigurationJsonPackageVersion>
  32. - <MicrosoftExtensionsConfigurationUserSecretsPackageVersion>3.0.0-preview-181113-11</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
  33. - <MicrosoftExtensionsLoggingConfigurationPackageVersion>3.0.0-preview-181113-11</MicrosoftExtensionsLoggingConfigurationPackageVersion>
  34. - <MicrosoftExtensionsLoggingConsolePackageVersion>3.0.0-preview-181113-11</MicrosoftExtensionsLoggingConsolePackageVersion>
  35. - <MicrosoftExtensionsLoggingDebugPackageVersion>3.0.0-preview-181113-11</MicrosoftExtensionsLoggingDebugPackageVersion>
  36. - <MicrosoftExtensionsLoggingEventSourcePackageVersion>3.0.0-preview-181113-11</MicrosoftExtensionsLoggingEventSourcePackageVersion>
  37. - <MicrosoftExtensionsLoggingPackageVersion>3.0.0-preview-181113-11</MicrosoftExtensionsLoggingPackageVersion>
  38. - <MicrosoftNETCoreAppPackageVersion>3.0.0-preview1-26907-05</MicrosoftNETCoreAppPackageVersion>
  39. + <InternalAspNetCoreSdkPackageVersion>3.0.0-alpha1-20181004.7</InternalAspNetCoreSdkPackageVersion>
  40. + <MicrosoftAspNetCoreAspNetCoreModulePackageVersion>3.0.0-alpha1-10733</MicrosoftAspNetCoreAspNetCoreModulePackageVersion>
  41. + <MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion>3.0.0-alpha1-10733</MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion>
  42. + <MicrosoftAspNetCoreDiagnosticsPackageVersion>3.0.0-alpha1-10733</MicrosoftAspNetCoreDiagnosticsPackageVersion>
  43. + <MicrosoftAspNetCoreHostFilteringPackageVersion>3.0.0-alpha1-10733</MicrosoftAspNetCoreHostFilteringPackageVersion>
  44. + <MicrosoftAspNetCoreHostingPackageVersion>3.0.0-alpha1-10733</MicrosoftAspNetCoreHostingPackageVersion>
  45. + <MicrosoftAspNetCoreRoutingPackageVersion>3.0.0-alpha1-10733</MicrosoftAspNetCoreRoutingPackageVersion>
  46. + <MicrosoftAspNetCoreServerIISIntegrationPackageVersion>3.0.0-alpha1-10733</MicrosoftAspNetCoreServerIISIntegrationPackageVersion>
  47. + <MicrosoftAspNetCoreServerIISPackageVersion>3.0.0-alpha1-10733</MicrosoftAspNetCoreServerIISPackageVersion>
  48. + <MicrosoftAspNetCoreServerIntegrationTestingIISPackageVersion>3.0.0-alpha1-10733</MicrosoftAspNetCoreServerIntegrationTestingIISPackageVersion>
  49. + <MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>0.7.0-alpha1-10733</MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>
  50. + <MicrosoftAspNetCoreServerKestrelHttpsPackageVersion>3.0.0-alpha1-10733</MicrosoftAspNetCoreServerKestrelHttpsPackageVersion>
  51. + <MicrosoftAspNetCoreServerKestrelPackageVersion>3.0.0-alpha1-10733</MicrosoftAspNetCoreServerKestrelPackageVersion>
  52. + <MicrosoftAspNetCoreStaticFilesPackageVersion>3.0.0-alpha1-10733</MicrosoftAspNetCoreStaticFilesPackageVersion>
  53. + <MicrosoftExtensionsConfigurationCommandLinePackageVersion>3.0.0-preview-181108-06</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
  54. + <MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>3.0.0-preview-181108-06</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
  55. + <MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>3.0.0-preview-181108-06</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
  56. + <MicrosoftExtensionsConfigurationJsonPackageVersion>3.0.0-preview-181108-06</MicrosoftExtensionsConfigurationJsonPackageVersion>
  57. + <MicrosoftExtensionsConfigurationUserSecretsPackageVersion>3.0.0-preview-181108-06</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
  58. + <MicrosoftExtensionsLoggingConfigurationPackageVersion>3.0.0-preview-181108-06</MicrosoftExtensionsLoggingConfigurationPackageVersion>
  59. + <MicrosoftExtensionsLoggingConsolePackageVersion>3.0.0-preview-181108-06</MicrosoftExtensionsLoggingConsolePackageVersion>
  60. + <MicrosoftExtensionsLoggingDebugPackageVersion>3.0.0-preview-181108-06</MicrosoftExtensionsLoggingDebugPackageVersion>
  61. + <MicrosoftExtensionsLoggingEventSourcePackageVersion>3.0.0-preview-181108-06</MicrosoftExtensionsLoggingEventSourcePackageVersion>
  62. + <MicrosoftExtensionsLoggingPackageVersion>3.0.0-preview-181108-06</MicrosoftExtensionsLoggingPackageVersion>
  63. + <MicrosoftExtensionsHostingPackageVersion>3.0.0-alpha1-10733</MicrosoftExtensionsHostingPackageVersion>
  64. + <MicrosoftNETCoreApp20PackageVersion>2.0.9</MicrosoftNETCoreApp20PackageVersion>
  65. + <MicrosoftNETCoreApp21PackageVersion>2.1.3</MicrosoftNETCoreApp21PackageVersion>
  66. + <MicrosoftNETCoreApp22PackageVersion>2.2.0-rtm-27105-02</MicrosoftNETCoreApp22PackageVersion>
  67. <MicrosoftNETTestSdkPackageVersion>15.6.1</MicrosoftNETTestSdkPackageVersion>
  68. <MoqPackageVersion>4.10.0</MoqPackageVersion>
  69. <NETStandardLibrary20PackageVersion>2.0.3</NETStandardLibrary20PackageVersion>
  70. diff --git a/samples/SampleApp/Program.cs b/samples/SampleApp/Program.cs
  71. index b5eb9002735..1d95226e6cd 100644
  72. --- a/samples/SampleApp/Program.cs
  73. +++ b/samples/SampleApp/Program.cs
  74. @@ -7,6 +7,8 @@ using Microsoft.AspNetCore.Builder;
  75. using Microsoft.AspNetCore.Hosting;
  76. using Microsoft.AspNetCore.Http;
  77. using Microsoft.AspNetCore.Routing;
  78. +using Microsoft.Extensions.Configuration;
  79. +using Microsoft.Extensions.Hosting;
  80. namespace SampleApp
  81. {
  82. @@ -23,6 +25,8 @@ namespace SampleApp
  83. CustomApplicationBuilder();
  84. StartupClass(args);
  85. +
  86. + HostBuilderWithWebHost(args);
  87. }
  88. private static void HelloWorld()
  89. @@ -90,5 +94,21 @@ namespace SampleApp
  90. host.Run();
  91. }
  92. }
  93. +
  94. + private static void HostBuilderWithWebHost(string[] args)
  95. + {
  96. + var host = new HostBuilder()
  97. + .ConfigureAppConfiguration(config =>
  98. + {
  99. + config.AddCommandLine(args);
  100. + })
  101. + .ConfigureWebHostDefaults(builder =>
  102. + {
  103. + builder.UseStartup<Startup>();
  104. + })
  105. + .Build();
  106. +
  107. + host.Run();
  108. + }
  109. }
  110. }
  111. diff --git a/samples/SampleApp/SampleApp.csproj b/samples/SampleApp/SampleApp.csproj
  112. index 19586777f26..64625f55838 100644
  113. --- a/samples/SampleApp/SampleApp.csproj
  114. +++ b/samples/SampleApp/SampleApp.csproj
  115. @@ -1,4 +1,4 @@
  116. -<Project Sdk="Microsoft.NET.Sdk.Web">
  117. +<Project Sdk="Microsoft.NET.Sdk.Web">
  118. <PropertyGroup>
  119. <TargetFramework>netcoreapp3.0</TargetFramework>
  120. @@ -11,6 +11,7 @@
  121. <ItemGroup>
  122. <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(MicrosoftAspNetCoreStaticFilesPackageVersion)" />
  123. + <PackageReference Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftExtensionsHostingPackageVersion)" />
  124. <ProjectReference Include="..\..\src\Microsoft.AspNetCore\Microsoft.AspNetCore.csproj" />
  125. </ItemGroup>
  126. </Project>
  127. diff --git a/src/Microsoft.AspNetCore/GenericHostBuilderExtensions.cs b/src/Microsoft.AspNetCore/GenericHostBuilderExtensions.cs
  128. new file mode 100644
  129. index 00000000000..80d0074e403
  130. --- /dev/null
  131. +++ b/src/Microsoft.AspNetCore/GenericHostBuilderExtensions.cs
  132. @@ -0,0 +1,33 @@
  133. +using System;
  134. +using Microsoft.AspNetCore.Hosting;
  135. +using Microsoft.AspNetCore;
  136. +
  137. +namespace Microsoft.Extensions.Hosting
  138. +{
  139. + /// <summary>
  140. + /// Extension methods for configuring the IWebHostBuilder.
  141. + /// </summary>
  142. + public static class GenericHostBuilderExtensions
  143. + {
  144. + /// <summary>
  145. + /// Initializes a new instance of the <see cref="IWebHostBuilder"/> class with pre-configured defaults.
  146. + /// </summary>
  147. + /// <remarks>
  148. + /// The following defaults are applied to the <see cref="IWebHostBuilder"/>:
  149. + /// use Kestrel as the web server and configure it using the application's configuration providers,
  150. + /// and enable IIS integration.
  151. + /// </remarks>
  152. + /// <param name="builder">The <see cref="IHostBuilder" /> instance to configure</param>
  153. + /// <param name="configure">The configure callback</param>
  154. + /// <returns></returns>
  155. + public static IHostBuilder ConfigureWebHostDefaults(this IHostBuilder builder, Action<IWebHostBuilder> configure)
  156. + {
  157. + return builder.ConfigureWebHost(webHostBuilder =>
  158. + {
  159. + WebHost.ConfigureWebDefaults(webHostBuilder);
  160. +
  161. + configure(webHostBuilder);
  162. + });
  163. + }
  164. + }
  165. +}
  166. diff --git a/src/Microsoft.AspNetCore/WebHost.cs b/src/Microsoft.AspNetCore/WebHost.cs
  167. index 10726c83565..fd9cadfcb89 100644
  168. --- a/src/Microsoft.AspNetCore/WebHost.cs
  169. +++ b/src/Microsoft.AspNetCore/WebHost.cs
  170. @@ -158,67 +158,73 @@ namespace Microsoft.AspNetCore
  171. builder.UseConfiguration(new ConfigurationBuilder().AddCommandLine(args).Build());
  172. }
  173. - builder.UseKestrel((builderContext, options) =>
  174. - {
  175. - options.Configure(builderContext.Configuration.GetSection("Kestrel"));
  176. - })
  177. - .ConfigureAppConfiguration((hostingContext, config) =>
  178. - {
  179. - var env = hostingContext.HostingEnvironment;
  180. + builder.ConfigureAppConfiguration((hostingContext, config) =>
  181. + {
  182. + var env = hostingContext.HostingEnvironment;
  183. - config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
  184. - .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
  185. + config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
  186. + .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
  187. - if (env.IsDevelopment())
  188. + if (env.IsDevelopment())
  189. + {
  190. + var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName));
  191. + if (appAssembly != null)
  192. {
  193. - var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName));
  194. - if (appAssembly != null)
  195. - {
  196. - config.AddUserSecrets(appAssembly, optional: true);
  197. - }
  198. + config.AddUserSecrets(appAssembly, optional: true);
  199. }
  200. + }
  201. - config.AddEnvironmentVariables();
  202. + config.AddEnvironmentVariables();
  203. - if (args != null)
  204. - {
  205. - config.AddCommandLine(args);
  206. - }
  207. - })
  208. - .ConfigureLogging((hostingContext, logging) =>
  209. + if (args != null)
  210. {
  211. - logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
  212. - logging.AddConsole();
  213. - logging.AddDebug();
  214. - logging.AddEventSourceLogger();
  215. - })
  216. - .ConfigureServices((hostingContext, services) =>
  217. + config.AddCommandLine(args);
  218. + }
  219. + })
  220. + .ConfigureLogging((hostingContext, logging) =>
  221. + {
  222. + logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
  223. + logging.AddConsole();
  224. + logging.AddDebug();
  225. + logging.AddEventSourceLogger();
  226. + }).
  227. + UseDefaultServiceProvider((context, options) =>
  228. + {
  229. + options.ValidateScopes = context.HostingEnvironment.IsDevelopment();
  230. + });
  231. +
  232. + ConfigureWebDefaults(builder);
  233. +
  234. + return builder;
  235. + }
  236. +
  237. + internal static void ConfigureWebDefaults(IWebHostBuilder builder)
  238. + {
  239. + builder.UseKestrel((builderContext, options) =>
  240. + {
  241. + options.Configure(builderContext.Configuration.GetSection("Kestrel"));
  242. + })
  243. + .ConfigureServices((hostingContext, services) =>
  244. + {
  245. + // Fallback
  246. + services.PostConfigure<HostFilteringOptions>(options =>
  247. {
  248. - // Fallback
  249. - services.PostConfigure<HostFilteringOptions>(options =>
  250. + if (options.AllowedHosts == null || options.AllowedHosts.Count == 0)
  251. {
  252. - if (options.AllowedHosts == null || options.AllowedHosts.Count == 0)
  253. - {
  254. - // "AllowedHosts": "localhost;127.0.0.1;[::1]"
  255. - var hosts = hostingContext.Configuration["AllowedHosts"]?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
  256. - // Fall back to "*" to disable.
  257. - options.AllowedHosts = (hosts?.Length > 0 ? hosts : new[] { "*" });
  258. - }
  259. - });
  260. - // Change notification
  261. - services.AddSingleton<IOptionsChangeTokenSource<HostFilteringOptions>>(
  262. - new ConfigurationChangeTokenSource<HostFilteringOptions>(hostingContext.Configuration));
  263. -
  264. - services.AddTransient<IStartupFilter, HostFilteringStartupFilter>();
  265. - })
  266. - .UseIIS()
  267. - .UseIISIntegration()
  268. - .UseDefaultServiceProvider((context, options) =>
  269. - {
  270. - options.ValidateScopes = context.HostingEnvironment.IsDevelopment();
  271. + // "AllowedHosts": "localhost;127.0.0.1;[::1]"
  272. + var hosts = hostingContext.Configuration["AllowedHosts"]?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
  273. + // Fall back to "*" to disable.
  274. + options.AllowedHosts = (hosts?.Length > 0 ? hosts : new[] { "*" });
  275. + }
  276. });
  277. -
  278. - return builder;
  279. + // Change notification
  280. + services.AddSingleton<IOptionsChangeTokenSource<HostFilteringOptions>>(
  281. + new ConfigurationChangeTokenSource<HostFilteringOptions>(hostingContext.Configuration));
  282. +
  283. + services.AddTransient<IStartupFilter, HostFilteringStartupFilter>();
  284. + })
  285. + .UseIIS()
  286. + .UseIISIntegration();
  287. }
  288. /// <summary>