2012-09-07 17 views
7

Cometí el error de actualizar webmatrix 2 que tenía corriendo a la última versión y ahora está roto todo!Webmatrix 2 roto

Desde la pantalla de esto es lo que yo estoy corriendo:

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 

Todo estaba funcionando perfecto hasta instalar la nueva versión de WebMatrix 2 en la que ahora estoy consiguiendo este error:

iisnode era incapaz de leer el archivo de configuración. Asegúrese de que la sintaxis del archivo web.config sea correcta. En particular, verifique que la sección de configuración de iNodo coincida con el esquema esperado. El esquema de la sección iNodo que requiere su versión de iisnode se almacena en el archivo% systemroot% \ system32 \ inetsrv \ config \ schema \ iisnode_schema.xml.

¿Qué diablos significa esto ??? ¿esquema?

Aquí está mi archivo web.config No he cambiado nada en él, ¿por qué webmatrix se queja de eso ???

Incluso he intentado ejecutar los ejemplos de plantilla pero también muestran el mismo mensaje. ¿Qué has hecho Microsoft para romper las cosas?

    <!-- 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> 

Respuesta

4

El problema es cómo funciona IISNode para registrar los mensajes ahora. Creo que está directamente relacionado con los problemas de console.log de los que tanto yo como los demás nos hemos quejado y cómo ha causado que IISNode se cuelgue a menudo. IISNode ahora almacena los mensajes de console.log en una carpeta separada llamada iisnode. Utiliza un sistema de registro diferente y supongo que es más estable que el anterior sistema server.js.logs.

He encontrado que estos ajustes web.config ya no son utilizables:

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

Si elimina estos entonces todo funciona bien.

+0

Esto funcionó para mí. ¡Gracias! – mpen

+0

También tuve que desinstalar iisnode y reinstalar el paquete x64 de https://github.com/tjanczuk/iisnode señalado por Neil arriba. –

3

también actualizado a WebMatrix 2 final de hoy, y se rompió IIS Express, evitando que funcione con Visual Studio 2012 RC y WebMatrix sí mismo. Sin embargo, yo era capaz de solucionarlo haciendo lo siguiente:

  • desinstalar IIS expreso 8,0 desde Agregar/quitar programas
  • desinstalar IIS expreso 7.5 desde Agregar/Quitar Plataforma Programas
  • Ejecutar web Instalador y reinstalar IIS Express 8.0.

También eliminé el contenido de mi carpeta IISExpress de Mis documentos, pero no estoy seguro de si era necesario.

+0

Llegué al problema del esquema IISNode como se describe arriba. Mi solución fue seguir las instrucciones en el sitio IISNode github (que son más largas que las de Richard, así que puede ser una mejor alternativa) El problema puede ser la obtención de la versión correcta de IISNode –

+0

El enlace github: https : //github.com/tjanczuk/iisnode –

+0

Gracias Neil, era IISNode y la eliminación de algunas propiedades antiguas que IISNode ya no usa en el archivo web.config. –

4

La solución más rápida es copiar el esquema correcto en la carpeta iis express.

Desde un símbolo del sistema de administrador:

en una máquina x64:

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

En una máquina x86:

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

Cuando ejecuto eso, obtengo 'File not found - iisnode_schema_x86.xml 0 File (s) copyied'. ¿Algún consejo? –

+0

Copió el archivo con éxito para mí, pero no resolvió el problema. – mpen

0

Sí, está en lo correcto, hubo cambios bruscos en las modificaciones de configuración para que iisnode sea compatible con la nueva configuración de registro. Es por eso que se requiere el nuevo esquema de configuración.

0

Recopilamos otra manera fácil de arreglar esto. Usted sólo puede desencadenar una re-instalar de iisnode con este WebPI instalar enlace:

http://www.microsoft.com/web/handlers/webpi.ashx?command=GetInstallerRedirect&appid=iisnodedev32

hacer clic en este asegurará la versión correcta del nodo IIS está instalado, y copiar el nuevo archivo de esquema sobre el directorio IIS expreso automágicamente. Por favor, háganos saber si esto no funciona para usted :)

+0

De hecho, ya tenía esto instalado (lo hice al intentar solucionar este problema). Entonces ... no solucionó mi problema, supongo. También hice una pregunta [aquí] (http://stackoverflow.com/questions/13079199/error-running-node-app-in-webmatrix). –