#351 Display hosting environment name and listening addresses on console.

This commit is contained in:
Chris R 2015-09-14 15:07:15 -07:00
parent bda0386a93
commit 10176373c8
5 changed files with 73 additions and 16 deletions

View File

@ -0,0 +1,37 @@
// 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;
using Microsoft.AspNet.Http.Features;
namespace Microsoft.AspNet.Hosting.Internal
{
public class Application : IApplication
{
private readonly IDisposable _stop;
private readonly IServiceProvider _services;
private readonly IFeatureCollection _server;
public Application(IServiceProvider services, IFeatureCollection server, IDisposable stop)
{
_services = services;
_server = server;
_stop = stop;
}
public IFeatureCollection ServerFeatures
{
get { return _server; }
}
public IServiceProvider Services
{
get { return _services; }
}
public void Dispose()
{
_stop.Dispose();
}
}
}

View File

@ -73,7 +73,7 @@ namespace Microsoft.AspNet.Hosting.Internal
}
}
public virtual IDisposable Start()
public virtual IApplication Start()
{
EnsureApplicationServices();
@ -96,23 +96,14 @@ namespace Microsoft.AspNet.Hosting.Internal
}
});
var serverAddresses = _serverInstance.Get<IServerAddressesFeature>();
if (serverAddresses != null)
{
foreach (var address in serverAddresses.Addresses)
{
logger.LogInformation("Now listening on: " + address);
}
}
_applicationLifetime.NotifyStarted();
return new Disposable(() =>
return new Application(ApplicationServices, _serverInstance, new Disposable(() =>
{
_applicationLifetime.NotifyStopping();
server.Dispose();
_applicationLifetime.NotifyStopped();
});
}));
}
private void EnsureApplicationServices()

View File

@ -0,0 +1,15 @@
// 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;
using Microsoft.AspNet.Http.Features;
namespace Microsoft.AspNet.Hosting.Internal
{
public interface IApplication : IDisposable
{
IFeatureCollection ServerFeatures { get; }
IServiceProvider Services { get; }
}
}

View File

@ -7,7 +7,7 @@ namespace Microsoft.AspNet.Hosting.Internal
{
public interface IHostingEngine
{
IDisposable Start();
IApplication Start();
// Accessing this will block Use methods
IServiceProvider ApplicationServices { get; }

View File

@ -2,6 +2,8 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.AspNet.Http.Features;
using Microsoft.AspNet.Server.Features;
using Microsoft.Dnx.Runtime;
using Microsoft.Framework.Configuration;
using Microsoft.Framework.DependencyInjection;
@ -22,7 +24,7 @@ namespace Microsoft.AspNet.Hosting
public void Main(string[] args)
{
// Allow the location of the ini file to be specified via a --config command line arg
// Allow the location of the json file to be specified via a --config command line arg
var tempBuilder = new ConfigurationBuilder().AddCommandLine(args);
var tempConfig = tempBuilder.Build();
var configFilePath = tempConfig[ConfigFileKey] ?? HostingJsonFile;
@ -35,11 +37,23 @@ namespace Microsoft.AspNet.Hosting
var config = builder.Build();
var host = new WebHostBuilder(_serviceProvider, config).Build();
using (host.Start())
using (var app = host.Start())
{
var hostingEnv = app.Services.GetRequiredService<IHostingEnvironment>();
Console.WriteLine("Hosting environment: " + hostingEnv.EnvironmentName);
var serverAddresses = app.ServerFeatures.Get<IServerAddressesFeature>();
if (serverAddresses != null)
{
foreach (var address in serverAddresses.Addresses)
{
Console.WriteLine("Now listening on: " + address);
}
}
Console.WriteLine("Application started. Press Ctrl+C to shut down.");
var appShutdownService = host.ApplicationServices.GetRequiredService<IApplicationShutdown>();
var appShutdownService = app.Services.GetRequiredService<IApplicationShutdown>();
Console.CancelKeyPress += (sender, eventArgs) =>
{
appShutdownService.RequestShutdown();