If you’ve just deployed a .svc file to a server (or your local IIS server) and you get an error that it doesn’t recognize the .svc mime type (or the type was blocked), they you need to do the following:
- Ensure that the .NET 3.5.1 Framework is installed.
- Ensure that “Windows Communication Foundation HTTP Activation is enabled and installed. This can be access via the Program Features in the Control panel under “Turn Windows Features on or off”.
- Execute the following command with elevated privileges (as administrator):
"%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -i
When you run the WCF service model registration, your machine web.config file will be updated. Below is output from the above command:
Microsoft(R) Windows Communication Foundation Installation Utility [Microsoft (R) Windows (R) Communication Foundation, Version 3.0.4506.5420] Copyright (c) Microsoft Corporation. All rights reserved. Installing: Machine.config Section Groups and Handlers (WOW64) Installing: Machine.config Section Groups and Handlers Installing: System.Web Build Provider (WOW64) Installing: System.Web Compilation Assemblies (WOW64) Installing: HTTP Handlers (WOW64) Installing: HTTP Modules (WOW64) Installing: System.Web Build Provider Installing: System.Web Compilation Assemblies Installing: HTTP Handlers Installing: HTTP Modules Installing: Protocol node for protocol net.tcp (WOW64) Installing: TransportConfiguration node for protocol net.tcp (WOW64) Installing: ListenerAdapter node for protocol net.tcp Installing: Protocol node for protocol net.tcp Installing: TransportConfiguration node for protocol net.tcp Installing: Protocol node for protocol net.pipe (WOW64) Installing: TransportConfiguration node for protocol net.pipe (WOW64) Installing: ListenerAdapter node for protocol net.pipe Installing: Protocol node for protocol net.pipe Installing: TransportConfiguration node for protocol net.pipe Installing: Protocol node for protocol net.msmq (WOW64) Installing: TransportConfiguration node for protocol net.msmq (WOW64) Installing: ListenerAdapter node for protocol net.msmq Installing: Protocol node for protocol net.msmq Installing: TransportConfiguration node for protocol net.msmq Installing: Protocol node for protocol msmq.formatname (WOW64) Installing: TransportConfiguration node for protocol msmq.formatname (WOW64) Installing: ListenerAdapter node for protocol msmq.formatname Installing: Protocol node for protocol msmq.formatname Installing: TransportConfiguration node for protocol msmq.formatname Installing: HTTP Modules (WAS) Installing: HTTP Handlers (WAS)
In the process of working through this problem, I first attempt to add the WCF HTTP Activation, which unfortunately corrupted my machine web.config file which prevented access to the IIS manager and associated application pools due to the error:
The configuration section 'system.serviceModel' cannot be read because it is missing a section declaration
It broke everything .NET related… GREAT!!!
Basically, for some reason my machine web.config was missing the configuration section DLL registrations for the WCF serviceModel. By using the ServiceModelReg.exe tool, it ensured that those base registrations were entered correctly. Once that was updated, the add new features option was able to complete successfully.
If after those changes, you are receiving the following error:
Could not load type ‘System.ServiceModel.Activation.HttpModule’ from assembly ‘System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
This error can occur when there are multiple versions of the .NET Framework on the computer that is running IIS, and IIS was installed after .NET Framework 4.0 or before the Service Model in Windows Communication Foundation was registered. [MSDN]
To fix this error, start a command prompt as an administrator. And run the following commands:
cd %WINDIR%\Microsoft.NET\Framework64\v4.0.30319 aspnet_regiis.exe -iru iisreset