James Harcourt
James Harcourt

Reputation: 6379

Kestrel / IIS hosting toggling with ASP.Net Core 2.2 / 3.0 application

Is there a way to compile / build our application once, but be able to deploy to either IIS (using the in-process hosting model) or run standalone using Kestrel?

This is an application that may be in some cases cloud hosted (Azure) but also packaged and installed standalone essentially a desktop-based application service web pages in an intranet scenario.

Currently the certificate file and password are loaded in the IWebHostBuilder implementation:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureServices(services =>
            {
                services.AddSingleton<ConfigurationContainer>(ConfigurationContainer);
            })                
            .UseKestrel(options =>
            {
                options.ConfigureEndpointDefaults(listenOptions =>
                {                        
                    if (_useHttps)                        
                        listenOptions.UseHttps(_certificateFile, _certificatePword);                        
                });
            })
            .UseUrls("xxxxx")
            .UseStartup<Startup>();

The objective is as above - to be able to essentially host the same build in IIS using (in-process hosting) or run up standalone using Kestrel.

Upvotes: 0

Views: 204

Answers (1)

robrich
robrich

Reputation: 13205

In theory, the dlls work identically in both. Because you've chosen to configure the Kestrel options in C#, you're likely hitting interesting scenarios in IIS. Try configuring Kestrel and the URLs in appsettings.json:

"Kestrel": {
  "EndPoints": {
  "Http": {
  "Url": "http://localhost:5555"
 }}}

Then in IIS, use IIS to configure these details.

See also https://stackoverflow.com/a/52077756/702931

Upvotes: 1

Related Questions