Dotnet core - Stopping the program

Recently I’ve noticed my ServiceStack docker containers are not shutting down when bad things happen like getting disconnected from RabbitMq.

When a fatal disconnect occurs I have my containers do Environment.Exit(1) or if that fails they Environment.FailFast() - this works fine for containers not hosting a servicestack instance. But the servicestack containers and process hangs around even after Exit.

I isolated a container and ran the dotnet MyServiceStackApp.dll manually from inside and the logs look great:

---> (Inner Exception #0) RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable ---> RabbitMQ.Client.Exceptions.ConnectFailureException: Connection failed ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address
   at IPHostEntry System.Net.Dns.InternalGetHostByName(string hostName)
   at void System.Net.Dns.ResolveCallback(object context)
   at IPHostEntry System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult)
   at IPAddress[] System.Net.Dns.EndGetHostAddresses(IAsyncResult asyncResult)
   <-- snip -->

Application is shutting down...

but then I check the process list and see my app is still running

root@82eadfc3efa2:/app# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0  18152  3236 pts/0    Ss   20:32   0:00 /bin/bash
root          8  0.4  1.9 22815560 154780 pts/0 SLl  20:32   0:02 dotnet MyServiceStackApp.dll
root        639  0.0  0.0  36640  2808 pts/0    R+   20:42   0:00 ps -aux

What is the proper way to terminate a running servicestack web service?

There’s nothing specific or different about ServiceStack which just runs as .NET Core middleware, i.e it’s all just an ASP.NET Core App.

There’s a couple of solutions for shutting down/restarting an ASP.NET Core App in:

Hmm thanks for the info. This is very troublesome - I’ll try the IApplicationLifetime option but it seems it only stops the site which boots up again at the first request. According to comments at least.

Docker and asp net core is quite a pain