I know what the documentation says, but I do not know where the IServer gets introduced or how it is configured.
My specific case is that I am calling IHostBuilder.ConfigureWebHost (not ConfigureWebHostDefaults), which as best I can determine does not automatically include Kestrel. I am using HttpSys via a UseHttpSys instead of using Kestrel.
I ran into an issue when I ran two local development websites at the same time. Even though the lauchSettings file had different ports for each, they both did register port 5000. Of course the 2nd site received an error indicating that 5000 was already in use. After much poking around, I found documentation indicating that port 5000 was the default for everything not just Kestrel. (I really believed that prior to 5.0, only Kestrel defaulted to 5000.) I proved the defaults by explicitly setting a URL in my code and it was honored and 5000 was not accessed. I then removed the code and set "urls": "http://localhost:6000" in the appSettings file and it to was honored. At this point I tried both true and false as the parameter to PreferHostingUrls and they both worked with the url configured in the appSettings file and both failed without an explicit url in either the appSettings or code.
So part of the question becomes what is IServer and how is it introduced and configured.