c# - with - ¿Problemas para publicar un sitio web en smarterasp.net con el archivo csc.exe incluido?
.net hosting with sql server (12)
Estoy usando Microsoft Visual Studio 2015, construí un sitio web simple con un formulario de contacto C #. Cuando compilo y ejecuto en localhost funciona perfectamente bien. Sin embargo, cuando intento publicarlo (en smarterasp.net) recibo un error:
[Win32Exception (0x80004005): Acceso denegado]
[ExternalException (0x80004005): no se puede ejecutar un programa. El comando que se ejecutaba era ".. / bin / roslyn / csc.exe"
Me he puesto en contacto con smarterasp.net y me han dicho que no permiten los archivos .exe. Traté de eliminar csc.exe con ftp del servidor, pero cuando lo hago obtengo el error:
No se pudo encontrar el archivo ".. / bin / roslyn / csc.exe".
¿Cómo puedo resolver este problema con el csc.exe que está tratando de ser incluido en mi proyecto para que pueda publicar mi sitio web?
Acabo de experimentar el mismo problema que el OP al publicar ASP.net 4.5.2 SPA a través de la implementación web en VS2015.
La solución que encontré para trabajar fue eliminar el paquete Nuget "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" .
Alternativamente, podría eliminar la sección de configuración del compilador system.codedom de su archivo Web.config , que tendría el mismo efecto.
Así es como lo hice funcionar:
- En su panel de control, vaya a Administrador de seguridad> Permitir archivos .EXE
- Establezca el valor en Activado (esto le permitirá cargar archivos .exe)
En su
Web.config
, establezca confianza total (esto le permitirá ejecutarlos)<configuration> <system.web> <trust level="Full" /> </system.web> </configuration>
En la configuración de publicación, habilite "Precompilar durante la publicación", pero en la Configuración de precompilación avanzada (el enlace Configurar al lado de esta opción), deshabilite "Permitir que el sitio precompilado sea actualizable".
Después de horas de investigación, se me ocurrió la solución.
Desde la versión de .NET 4.5, la compilación de Roslyn es la forma predeterminada de compilación. Esto significa que si creas cualquier aplicación web ya sea Web Forms o MVC usando .NET 4.5 obtienes esta compilación Roslyn csc.exe preinstalada en tu proyecto.
Básicamente, lo que necesitaba era compilar e implementar mi proyecto sin Roslyn ni ningún archivo .exe en él.
Así que aquí está la Solución que funcionó para mí. Puede implementar sin Roslyn sin ningún cambio en el código:
- Abra la ventana Administrador de paquetes de NuGet
- desinstale el paquete Microsoft.CodeDom.Providers.DotNetCompilerPlatform y reconstruya y vuelva a publicar. (Esta desinstalación también elimina la configuración de CodeDom del archivo web.config).
Esto resolverá tu propósito. Básicamente, esto no generará ningún archivo csc.exe, vbc.exe dentro de la carpeta bin.
¡Espero que funcione para ti tambien!
Las soluciones anteriores no me funcionaron y no son correctas, ya que Roslyn no es opcional en estos días.
Lo que funcionó fue asegurarse de que la cuenta del grupo haya leído y ejecutado los permisos en la carpeta raíz de la aplicación web. Puede encontrar la cuenta para otorgar este permiso buscando el nombre del grupo que usa su aplicación web, luego Grupo de aplicaciones -> nombre del grupo -> Configuración avanzada -> Identidad.
Mi servidor VPS utiliza directorios no estándar para hosting de la siguiente manera:
c:/home/web.app.name/wwwroot
La carpeta web.app.name necesitaba el permiso.
Si necesita SmarterAsp.Net para permitir la carga de un archivo .exe para admitir las características y la funcionalidad de su sitio web, puede hacerlo. Simplemente vaya al panel de control y active "Permitir archivos .Exe". Consulte a continuación:
En mi caso, tuve que hacer esto porque quería alojar un sitio web Asp.Net Core y eso requiere absolutamente un archivo .exe :-)
Si realmente desea conservar el código de roslyn, solo necesita establecer los permisos en la carpeta bin de la aplicación para permitir que el usuario de ApplicationPool lea y ejecute.
Hice esto usando la pestaña de Seguridad del explorador en el diálogo de propiedades de la carpeta, pero también debería poder hacer algo como:
icacls PATH_TO_SERVICE_BIN /grant "ApplicationPoolUser":(OI)(CI)RX
Simplemente configure el acceso rw para la carpeta /bin
en Smarterasp.net File Manager como se muestra a continuación, reinicie su aplicación
Simplemente elimine la sección codificada del Web.config, esto resuelve el problema.
Tuve el mismo error y lo resolví habilitando los permisos del directorio de alojamiento (lectura / escritura / eliminación).
Tuve este problema en Smarter ASP. En el administrador de archivos del navegador en el panel de control, vaya a la carpeta ''Roslyn'' en el contenedor y configure el permiso .net para leer / escribir. Funcionó entonces.
tl; dr: asegúrese de que csc.exe no tenga un tamaño de cero bytes.
Respuesta más larga
Para agregar otra causa y solución: en mi caso, obtuve esta pantalla amarilla de la muerte en mi navegador:
Error del servidor en la aplicación ''/''.
error de compilación
Descripción: Se produjo un error durante la compilación de un recurso requerido para atender esta solicitud. Revise los siguientes detalles de error específicos y modifique su código fuente de manera adecuada.
Mensaje de error del compilador: el compilador falló con el código de error 255.
c: / windows / system32 / inetsrv> C: / inetpub / wwwroot / bin / roslyn / csc.exe / t: library / utf8output / nostdlib + ...
Información de la versión: Microsoft .NET Framework Version: 4.0.30319; Versión ASP.NET: 4.7.2558.0
Tras la investigación, aislé la llamada a csc.exe ejecutándola dentro de una ventana de CMD:
c:/inetpub/wwwroot/bin/roslyn/csc.exe
Tengo este cuadro de mensaje:
seguido por esta línea en la ventana de CMD:
Acceso denegado.
Al inspeccionar los archivos en Windows File Explorer descubrí que csc.exe tenía un tamaño de cero bytes.
No estoy seguro de en qué etapa de mi script de implementación sucede, pero después de reemplazar el csc.exe de 0 bytes por uno real, todo funciona correctamente.