I just posted this information as an update to an earlier post about problems with the Reporting Services /ReportServer and /Reports virtual directories sometimes not responding on port 80. Today I realized that my problem wasn’t limited to just Reporting Services. This morning, none of my IIS hosted sites were responding. I’d get 404’s for anything I tried.
It turns out that by default, Skype will use both ports 80 and 443 as alternatives to its regular port for incoming connections (for firewall purposes). If Skype get’s to port 80 before the System does (not sure how, but it happens), then Skype grabs the ports and prevents the other services for receiving any requests.
To turn this off in Skype, open Skype and go to “Tools” | “Options”, on the left hand side of the options dialog select “Advanced” | “Connection” and then turn off the checkbox for the “Use port 80 and 443 as alternatives for incoming connections”.
A Quick FYI, the tools I used to figure it out were Fiddler, the netstat command line utility included with windows, and the Windows Task Manager, and the web.
First, Fiddler. As I used fiddler to try and browse local sites, I got a VERY basic 404 Response back. No server information or anything. That let me know that I wasn’t hitting IIS.
Next, netstat. To figure out which process was grabbing my port 80 traffice I used “netstat –ao” and saw the Process ID 2384 was the process listening on port 80.
On to Task Manager. I looked that up in my task manager, and found that it was Skype.
Finally a web search. Did a quick search on Skype and Port 80 and found a number of hits discussing the same problem.
Normally, the System process should be grabbing port 80. If you open a command prompt using the “Run as Administrator” option and run “netstat –ao” you should see the PID (Process ID) that is listening on each port. Then open up your Task Manager (or better yet Process Explorer). In task manager, switch to the “Processes” tab and use the “View” | “Select Columns…” menu to enable the “PID (Process ID”) column to be displayed. You should see something similar to the following:
Today however, when I looked I found Skype’s process ID, not System’s. (Sorry, I didn’t take a screen shot when I had it).
This isn’t a problem if you are using Visual Studio .Net’s development web server (aka Cassini) because it uses a dynamically chosen port for each site. It could be a problem if you are hosting any sites in IIS or trying to use things like SQL Server Reporting Services which has web based components that want to listen on port 80.
So I put this here for me to remember the problem, and in hopes that it may help some other frustrated developer out there.