This issue might occur when Reporting Services is using the default port (80 or 443) to run Report Server and Report Manager on your workstation. I’ve reproduced this issue on Windows 7 and Vista, but Windows XP is probably also affected by the issue.
What’s the big deal? You install SSRS on your workstation, everything goes fine, the service starts, but the URLs for Report Server and Report Manager just don’t work (either throwing a HTTP 404 or just refusing to connect). You might also encounter the issue a few days (weeks/months etc.) after the initial installation.
We need to investigate the issue. The SSRS logs will come in handy (their default location is: C:\Program Files\Microsoft SQL Server\MSRS10.[INSTANCE_NAME]\Reporting Services\LogFiles). You should look for something similar to:
rshost!rshost!1120!12/12/2009-22:21:33:: e ERROR: Failed to register url=http://+:80/ReportServer/ for endpoint 2, error=20. rshost!rshost!1120!12/12/2009-22:21:33:: w WARN: Endpoint 2 is enabled but no url is registered for vdir=/ReportServer, pdir=c:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer. servicecontroller!DefaultDomain!1200!12/12/2009-22:21:33:: e ERROR: Error creating HTTP endpoint. System.IO.FileLoadException: The process cannot access the file because it is being used by another process. (Exception from HRESULT: 0x80070020) at Microsoft.ReportingServices.HostingInterfaces.IRsUnmanagedCallback.CreateHttpEndpoint(RsAppDomainType application, String[] urlPrefixes, Int32 cPrefixes, String virtualDirectory, String filePath, Int32 authType, Int32 logonMethod, String authDomain, String authRealm, Boolean authPersist, Boolean enabled) at Microsoft.ReportingServices.Library.ServiceAppDomainController.SetWebConfiguration(RunningApplication rsApplication, Boolean enabled, String folder) rshost!rshost!ca4!12/12/2009-22:21:33:: e ERROR: Failed to register url=http://+:80/Reports/ for endpoint 3, error=20. rshost!rshost!ca4!12/12/2009-22:21:33:: w WARN: Endpoint 3 is enabled but no url is registered for vdir=/Reports, pdir=c:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportManager. servicecontroller!DefaultDomain!1200!12/12/2009-22:21:33:: e ERROR: Error creating HTTP endpoint. System.IO.FileLoadException: The process cannot access the file because it is being used by another process. (Exception from HRESULT: 0x80070020) at Microsoft.ReportingServices.HostingInterfaces.IRsUnmanagedCallback.CreateHttpEndpoint(RsAppDomainType application, String[] urlPrefixes, Int32 cPrefixes, String virtualDirectory, String filePath, Int32 authType, Int32 logonMethod, String authDomain, String authRealm, Boolean authPersist, Boolean enabled) at Microsoft.ReportingServices.Library.ServiceAppDomainController.SetWebConfiguration(RunningApplication rsApplication, Boolean enabled, String folder)
Changing the port in Reporting Services Configuration Manager to an unused port (like 8080, but that might not be true on your workstation) resolves the issue. So we have another service blocking the default port.
Now we need to find the culprit. A quick netstat will show the PID of the blocking process:
netstat -ano -p tcp Active Connections Proto Local Address Foreign Address State PID ... TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 5340 ...
Now we can find out more about the offending process (PID 5340 in this example). Task Manager can be used (after checking PID on View->Select Columns) or we can use tasklist here:
tasklist /FI "PID eq 5340" Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ Skype.exe 5340 Console 1 66 488 K
Surprised? Well, I didn’t expect Skype here. But under Tools->Options->Advanced->Connection you can find the source of our problem:
Clearing this option and restarting SSRS also resolves the whole issue. Even if it’s not Skype, the idea remains the same – close the offending process, change the port it’s listening on or change the ports for Report Server and Report Manager.