HTTP Error 404.3 – Not Found, when browsing WCF application after reinstalling IIS


Sometime back my friend had a weird issue on his machine. He was working on his WCF application and as per his requirement he ran some command which brought his IIS down.


So, to resolve the issue he reinstalled IIS and now his WCF application won’t work.


Here is the scenario:


I am using Win 7 RC for our test; his was a Windows Vista box. I have IIS installed and have Microsoft .NET Framework 3.5.1 enabled, here’s the screenshot


image1


I created a simple WCF page such that it proves WCF is working on the machine.


Now, let’s uninstall IIS. Look at the prompt here


image2


The prompt says it will turn off the Windows Communication Foundation HTTP Activation.


On Windows Server 2008, it will prompt you something like this


image8


On Windows Server 2008 R2 RC1, it shows like this


image9


Click Yes


image3


Click OK


IIS is uninstalled.


Check the inetsrv folder and you will find few files and the applicationHost.config remaining


image4


Now, I reinstall IIS again and this time not selecting the WCF HTTP Activation because many of the times we will miss this option.


image013


Start IIS Manager -> Expand Sites and this is what I see


image015


All my other websites have Binding missing.


image017


This is because the old applicationHost.config had the configuration information and when we uninstalled IIS, the skeleton of the new websites stayed. Hence we can see the websites but the configuration missing.


I added the Bindings manually and now the websites are looking good.


Let’s look at the original issue. I will browse the WCF application and it fails


image019


I really love IIS 7 for all the good things. The error is self-explanatory and it clearly says the handler or the MIME mapping is missing.


The error code 0x80070032 means “The request is not supported”. IIS does not know what the file Service.svc is.


Open applicationHost.config and search for .svc and it returns with nothing.


Open, command prompt and go to C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation>


Run the command ServiceModelReg.exe –i


This command acts similar to what aspnet_regiis.exe –i does. ServiceModelReg.exe –i will install Windows Communication Foundation and update scriptmaps at the Metabase root i.e. in the applicationHost.config.


Open applicationHost.config and now look for .svc


You will find the following handler mappings


<add name=”svc-Integrated” path=”*.svc” verb=”*” type=”System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ preCondition=”integratedMode” />
<add name=”svc-ISAPI-2.0″ path=”*.svc” verb=”*” modules=”IsapiModule” scriptProcessor=”%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll” preCondition=”classicMode,runtimeVersionv2.0,bitness32″ />
<add name=”svc-ISAPI-2.0-64″ path=”*.svc” verb=”*” modules=”IsapiModule” scriptProcessor=”%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll” preCondition=”classicMode,runtimeVersionv2.0,bitness64″ />

Browse the page again and now Service.svc executed fine.


HTH.

Comments (1)

  1. Felix says:

    Thanks! This really helps me solve a stupid Vista vs. WCF vs. IIS7.0 vs. VS2008 issue.