Notas útiles sobre programación, despliegue de aplicaciones y uso de herramientas de desarrollo.
Esta sección esta destinada para los siguientes tipos de proyectos
- ASP.NET Web Forms
- ASP.NET MVC (Framework)
- ASP.NET (Core/5+/6+)
Se listan una serie de errores comunes con los que me he topado en varios proyectos, algunos son muy especificos y otros más conocidos. Lo dejo aquí para ayudar a quien lo necesite:
- Error 001 - No se puede encontrar una parte de la ruta de acceso ...\bin\roslyn\csc.exe
- Error 002 - ERR_SSL_VERSION_OR_CIPHER_MISMATCH en el navegador al ejecutar aplicacion en Windows 7
- Error 003 - build\Microsoft.TypeScript.targets.. MSB6006.. NodeJS\node.exe salio con el código 216
Este error suele pasar por ej. cuando se quiere ejecutar un proyecto en una nueva maquina o cuando se retoma el proyecto luego de un tiempo prolongado. Se recomienda probar lo siguiente:
-
En Visual Studio IDE con el proyecto abierto, ejecutar desde la consola de administración de paquetes Nugget el comando
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
-
Cerrar la instancia de Visual Studio IDE y buscar en el Administrador de tareas de Windows estos procesos.
- SmSvcHoost.exe
- VBCSCompiler.exe
-
Borrar las carpetas temporales del proyecto
obj
,bin
y.vs
, (esta última suele estar oculta).
Abrir la aplicación, recompilar y probar si anda.
Este error se produce en Windows 7 porque este tiene deshabilitado por defecto TLS 1.2 en el registro. Por ende hay dos opciones para poder ejecutar la aplicación.
- Habilitar TLS 1.2 en el registro de Windows 7 como se indica aquí
- Deshabilitar SSL del proyecto como se indica aquí
La segunda es la forma más rápida.
Para solucionar este error se debe modificar el archivo
Microsoft.TypeScript.targets
, el mismo se encuentra en la ubicación
C:\Program Files (x86)\Microsoft SDKs\TypeScript\4.3\build
(este
path puede variar) → buscar el nodo y dejarlo como se muestra a continuación:
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
Para poder desplegar una aplicación web en un servidor con Windows usando Internet Information Services se requiere seguir los siguientes pasos.
- Activar IIS
- Crear directorio de despliegue
- Asignar permisos al directorio (*)
- Desplegar aplicación en directorio
- Agregar sitio de aplicación en IIS
- Modificar archivo
applicationHost.config
(**) - Probar la aplicación
Abrimos el programa Panel de Control → vamos al apartado Programas → luego a Activar o desactivar las caracreristicas de Windows → buscamos y marcamos la casilla Internet Information Services → le damos a instalar y una vez finalizado reiniciamos el sistema.
Imagen de referencia
Abrimos el Explorador de archivos de Windows y vamos a la ruta
C:\inetpub\wwwroot\
→ ahí dentro creamos un directorio donde
desplegaremos los archivos de nuestra aplicación. Por ej. misitio
y entonces nos quedaría C:\inetpub\wwwroot\misitio
como ruta de
despliegue
Ahora vamos a asignar los permisos necesarios para que no salten
errores a la hora de visitar nuestro sitio web. Para eso hacemos
click derecho sobre la carpeta misitio
y en Propiedades →
vamos a la sección Compartir → click en botón Compartir... →
y agregamos al usuario Todos
y le damos permisos de lectura y
escritura.
(*) La omisión de este paso puede causar los siguientes errores una vez desplegada la aplicación:
- Error de servidor en la aplicación...
- Failed to update database C:\INETPUB\WWWROOT....\...*.MDF because the database is read-only.
- Cannot create file *.mdf because it already exists
Desde Visual Studio IDE desplegamos los archivos de nuestra
aplicación en la ruta del directorio que creamos anteriormente, en
este caso sería C:\inetpub\wwwroot\misitio
.
Ver como desplegar aplicación web desde Visual Studio IDE aquí
Ahora vamos a agregar un sitio desde donde poder "ver" nuestra aplicación web funcionando. Para esto Abrimos IIS → en la sección Conexiones → vamos a Sitios → luego click derecho y la opción Agregar sitio web... → ahí completamos los siguientes campos:
- Nombre de sitio: cualquier valor
- Grupo de aplicaciones: cualquier valor
- Ruta de acceso física: aquí copiamos la dirección de despliegue
previamente creada, en este caso sería
C:\inetpub\wwwroot\misitio
- Puerto: elegimos un nro. de puerto que no este en uso. Como
ayuda podemos ejecutar en una terminal el comando
netstat -ano | findstr:<puerto>
con un número de puerto y verificar si el mismo esta o no en uso. Si no devuelve nada el puerto esta libre. Por ej. elegimos el puerto8095
.
Abrimos el Explorador de Archivos de Windows y vamos a la ruta
C:\Windows\System32\inetsrv\config\
→ ahí buscamos el archivo
applicationHost.config
y lo abrimos con algún editor (puede que
necesitemos permisos de administrador para editarlo) → dentro buscamos
la sección de código ~applicationPools
como se puede ver:
<applicationPools>
<add name="DefaultAppPool" autoStart="true" />
<add name="Classic .NET AppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" />
<add name=".NET v2.0 Classic" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" />
<add name=".NET v2.0" managedRuntimeVersion="v2.0" />
<add name=".NET v4.5 Classic" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" />
<add name=".NET v4.5" managedRuntimeVersion="v4.0" />
<add name="test" />
<applicationPoolDefaults managedRuntimeVersion="v4.0">
<processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="false" />
</applicationPoolDefaults>
</applicationPools>
Editamos la etiqueta processModel
de manera que quede así:
<applicationPoolDefaults managedRuntimeVersion="v4.0">
<processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" />
</applicationPoolDefaults>
(**) En algunos sistemas puede que no haga falta hacer estos cambios. Se recomienda omitir este paso y solo si salen errores volver y aplicarlos. Los cambios en este archivo afectan a todos los sitios web administrados por IIS
Por último, probamos el sitio web de nuestra aplicación. Abrimos IIS → en la sección Conexiones → luego en Acciones → elegimos la opción Examinar sitio web → y Examinar *:8095 (http) (8095 fue el puerto de ej. que elegimos previamente) se nos abrira una ventana del navegador y podremos interactuar con nuestra aplicación.
- https://stackoverflow.com/questions/26248293/sql-network-interfaces-error-50-local-database-runtime-error-occurred-canno
- https://stackoverflow.com/questions/13308654/iis-connecting-to-localdb
- https://web.archive.org/web/20190113153530/https://blogs.msdn.microsoft.com/sqlexpress/2011/12/08/using-localdb-with-full-iis-part-1-user-profile/
- https://web.archive.org/web/20190119164902/https://blogs.msdn.microsoft.com/sqlexpress/2011/12/08/using-localdb-with-full-iis-part-2-instance-ownership/
- https://www.youtube.com/watch?v=kfTxIyGNJK4