We are excited to announce that the IIS.NET Forums are moving to the new Microsoft Q&A experience. Learn more >

View Complete Thread
  • IIS 8 in parallel with other web services on Windows 2012 R2

    Jan 29, 2014 10:38 AM|Tron 42|LINK

    OS: Windows 2012 R2 x64 EN
    Web servers: IIS 8.5.9600.16384 (short IIS), Google Go 1.2 web service (short GO)

    My network adapters are using three IP4 addresses:

    • a
    • b
    • c

    The IIS runs two sites: A, B and the binding is

    • A>a:80
    • B>b:80
    • B>b:443

    I configured the IIS to listen to a and b as follows:

    • netsh http add iplisten ipaddress=a
    • netsh http add iplisten ipaddress=b

    The command netsh http show iplisten shows:

    • a
    • b

    The Google Go Webservice runs on IP4 address:

    • c

    Situation: This config runs fine on Windows 2008 R2. On Windows 2012 R2 it seems to run at first BUT after restarting the server the Google Go Webservice is running but the sites A and B are stopped. However I can start them manually and all three sites are operational again.

    Approach 1: The sites A and B are running. Now I disable the Google Go Webservice and restart the service. But the sites A and B are still stopped after the restart.

    Approach 2: (the Go Webservice is still disabled) I now add the global IP address 0.0.0.0 for the IIS to listen. So netssh http show iplisten shows: 0.0.0.0, a, b. After the restart the sites A und B are still running. However listening on 0.0.0.0 does prevent the Google Go Webservice from running because his IP and port is now blocked by the IIS.

    Question 1: Why does the IIS need the 0.0.0.0 IP address to start the sites? To me this looks like a problem in Windows Server 2012 R2.

    Question 2: the problem amplifies if the server configuration needs to be changed. The WinRM service is involved in the installation of roles and features. If the IIS does not listen to 0.0.0.0 any changes to roles and configuration will fail in the Wizard with "the WinRM service is not available". In my situation I have to enable listening to 0.0.0.0 then I can make the config changes and then I have to remove the binding again to allow GO to run.

    You can also simplify the scenario. Leave other web services out and just order Windows 2012 R2 to listen to specific IP addresses. Starting from this point the IIS will not start his sites. If you add IP 0.0.0.0 again they will start.

    The capability of the IIS to listen to specific IP adresses is an important prerequisite to run other web services in parallel. If the IIS needs to listen to IP 0.0.0.0 it will not be possible to run other web services. The other services (started manually or automatically) will not start because they will be in conflict with the IIS listening on 0.0.0.0. Thus I think this dependency on 0.0.0.0 is a bug in Windows 2012 R2.

    My workaround for this issue is that I have written a small service that will start all sites of the IIS manually after the server has been booted. Quite horrible and I hope Microsoft will fix this soon.

    Thanks for your support.