Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Webmatrix 2 broken

I made the mistake of upgrading webmatrix 2 that I had running to the latest version and now it's broken everything!

From the about screen this is what I am running:

Version 2.0

WebMatrix: 7.1.1674.0
IIS Express: 8.0.8418.0
.NET Framework: 4.0.30319.269 (RTMGDR.030319-2600)
Web Deploy: 7.1.1631.0
SQL Server Compact: 4.0.8854.1
Web Platform Installer: 7.1.1622.0
ASP.NET Web Pages: 2.0.20715.0

Everything was running perfect until I install the latest version of webmatrix 2 in which now I am getting this error:

iisnode was unable to read the configuration file. Make sure the web.config file syntax is correct. In particular, verify the iisnode configuration section matches the expected schema. The schema of the iisnode section that your version of iisnode requires is stored in the %systemroot%\system32\inetsrv\config\schema\iisnode_schema.xml file.

What the hell does this mean ???? schema?

Here is my web.config file I haven't changed anything in it, why is webmatrix complaining about it???

I've even try running the template examples but they display the same message as well. What have you done Microsoft to break things!!!???

                  <!-- Don't interfere with requests for logs -->
                  <rule name="LogFile" patternSyntax="ECMAScript" stopProcessing="true">
                       <match url="^[a-zA-Z0-9_\-]+\.js\.logs\/\d+\.txt$"/>
                  </rule>

              <!-- Don't interfere with requests for node-inspector debugging -->
              <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">                    
                  <match url="^server.js\/debug[\/]?" />
              </rule>

                  <!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
                  <rule name="StaticContent">
                       <action type="Rewrite" url="public{REQUEST_URI}"/>
                  </rule>

                  <!-- All other URLs are mapped to the Node.js application entry point -->
                  <rule name="DynamicContent">
                       <conditions>
                            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
                       </conditions>
                       <action type="Rewrite" url="server.js"/>
                  </rule>

             </rules>
        </rewrite>
        <!-- You can control how Node is hosted within IIS using the following options -->
      <iisnode      
        node_env="%node_env%"
        nodeProcessCommandLine="&quot;%programfiles%\nodejs\node.exe&quot;"
        nodeProcessCountPerApplication="1"
        maxConcurrentRequestsPerProcess="1024"
        maxNamedPipeConnectionRetry="3"
        namedPipeConnectionRetryDelay="2000"      
        maxNamedPipeConnectionPoolSize="512"
        maxNamedPipePooledConnectionAge="30000"
        asyncCompletionThreadCount="0"
        initialRequestBufferSize="4096"
        maxRequestBufferSize="65536"
        watchedFiles="*.js;node_modules\*;routes\*.js;views\*.ejs;middleware\*.js"
        uncFileChangesPollingInterval="5000"      
        gracefulShutdownTimeout="60000"
        loggingEnabled="true"
        logDirectoryNameSuffix="logs"
        debuggingEnabled="true"
        debuggerPortRange="5058-6058"
        debuggerPathSegment="debug"
        maxLogFileSizeInKB="128"
        appendToExistingLog="false"
        logFileFlushInterval="5000"
        devErrorsEnabled="true"
        flushResponse="false"      
        enableXFF="false"
        promoteServerVars=""
       />
      <!-- <iisnode watchedFiles="*.js;node_modules\*;routes\*.js;views\*.ejs;middleware\*.js"/>-->
      <!-- watchedFiles="*.js" -->
   </system.webServer>

like image 891
PazoozaTest Pazman Avatar asked Sep 07 '12 06:09

PazoozaTest Pazman


Video Answer


3 Answers

The problem is how IISNode works to log messages now. I believe it's directly related to the console.log problems that myself and others complained about, and how it caused IISNode to crash often. IISNode now stores console.log messages in a separate folder called iisnode. It uses a different logging system and I am presuming it is more stable than the older server.js.logs system.

I found that these web.config settings are no longer useable:

- logDirectoryNameSuffix="logs"
- appendToExistingLog="false"
- logFileFlushInterval="5000"

If you remove these then everything works fine.

like image 125
PazoozaTest Pazman Avatar answered Oct 13 '22 18:10

PazoozaTest Pazman


The quickest solution is to copy the correct schema into the iis express folder.

From an administrator command prompt:

on an x64 machine:

xcopy /y "%programfiles(x86)%\iisnode-dev\release\x86\iisnode_schema_x86.xml" "%programfiles(x86)%\IIS Express\config\schema\iisnode_schema.xml"

On an x86 machine:

xcopy /y "%programfiles%\iisnode-dev\release\x86\iisnode_schema_x86.xml" "%programfiles%\IIS Express\config\schema\iisnode_schema.xml"
like image 20
Mark Cowlishaw - MSFT Avatar answered Oct 13 '22 18:10

Mark Cowlishaw - MSFT


I also updated to WebMatrix 2 final today, and it broke IIS Express, preventing it from working with Visual Studio 2012 RC and WebMatrix itself. However, I was able to fix it by doing the following:

  • Uninstall IIS Express 8.0 from Add/Remove Programs
  • Uninstall IIS Express 7.5 from Add/Remove Programs
  • Run Web Platform Installer and reinstall IIS Express 8.0.

I also deleted the contents of my IISExpress folder from My Documents, but I'm not sure whether that was necessary.

like image 3
Richard Avatar answered Oct 13 '22 17:10

Richard