We're attempting to migrate our web application servers from 2008 boxes to 2012. As part of this, we're also upgrading the IIS host from 7 to 8.5.
When I attempt to access the simplest application we have on the new box with an identical web.config to our current, working production environment, I get the following error (using IE locally on the host machine).
HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
Module
   WebSocketModule 
Notification
   BeginRequest 
Handler
   ExtensionlessUrlHandler-ISAPI-4.0_64bit 
Error Code
   0x80070490 
Config Error
   The configuration section 'system.webServer/webSocket' cannot be read because it is missing a section declaration  
Config File
   \\?\C:\XXX\XXX\XXX\web.config 
Config Source:
   -1: 
    0: 
Our web server section looks like this.
<system.webServer>
    <modules>
        <add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v15.1, Version=15.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
    </modules>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
        <add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v15.1, Version=15.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DX.ashx" name="ASPxHttpHandlerModule" preCondition="integratedMode" />
        <add name="ASPxUploadProgressHandler" preCondition="integratedMode" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v15.1, Version=15.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
    </handlers>
</system.webServer>
Using my basic pattern finding skills, I tried adding in the webSocket section.
<system.webServer>
    <webSocket enabled="false"/>
    <modules>
        <add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v15.1, Version=15.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
    </modules>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
        <add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v15.1, Version=15.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DX.ashx" name="ASPxHttpHandlerModule" preCondition="integratedMode" />
        <add name="ASPxUploadProgressHandler" preCondition="integratedMode" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v15.1, Version=15.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
    </handlers>
</system.webServer>
The error message then changes to the following.
HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
Module
   IIS Web Core 
Notification
   BeginRequest 
Handler
   Not yet determined 
Error Code
   0x8007000d 
Config Error
Config File
   \\?\C:\MDM\Webs\Symcom\web.config 
What in the holy heck am I missing here? The only difference in the config between our working IIS 7 deployment and the new IIS 8.5 deployment are my attempts to provide the webSocket section of the configuration.
So as it turns out, we had .NET installed, and a configuration value for it in the registry, but NOT as part of the server manager. We also had to reboot the server to allow it to finish some updates.
Once we installed it via the server manager and recycled the application pool everything was hunky dory.
User contributions licensed under CC BY-SA 3.0