es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

DotNet 6 no se ejecuta en un contenedor de Windows: Permiso denegado.

No estoy familiarizado/a con los contenedores de Windows y estoy obteniendo este error al intentar depurar una aplicación hola mundo de DotNet 6 en VS2022:

No se puede usar un flujo de archivos para [C:\app\bin\Debug\net6.0\WebApplication5.runtimeconfig.json]: Permiso denegado.
Configuración de tiempo de ejecución json no válida [C:\app\bin\Debug\net6.0\WebApplication5.runtimeconfig.json] [C:\app\bin\Debug\net6.0\WebApplication5.runtimeconfig.dev.json].
El proceso objetivo finalizó sin generar un evento de inicio de CoreCLR. Asegúrate de que el proceso objetivo esté configurado para usar .NET Core. Esto puede ser esperado si el proceso objetivo no se ejecutó en .NET Core.
El programa '[13360] dotnet.exe' finalizó con el código 2147516563 (0x80008093).

Archivo Dockerfile (predeterminado):

#Consulta https://aka.ms/containerfastmode para entender cómo Visual Studio utiliza este Dockerfile para construir tus imágenes de forma más rápida en tiempo de depuración.

#Dependiendo del sistema operativo de la máquina anfitriona que construirá o ejecutará los contenedores, es posible que se deba cambiar la imagen especificada en la instrucción FROM.
#Para obtener más información, consulta https://aka.ms/containercompat

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY "WebApplication5/WebApplication5.csproj" "WebApplication5/"
RUN dotnet restore "WebApplication5/WebApplication5.csproj"
COPY . .
WORKDIR "/src/WebApplication5"
RUN dotnet build "WebApplication5.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication5.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .

ENTRYPOINT "dotnet" "WebApplication5.dll"

Intenté ejecutar el contenedor de forma interactiva para validar si el archivo realmente estaba allí, pero este comando no funcionó:

docker run -it --entrypoint powershell.exe webapplication5
docker: Respuesta del demonio: el contenedor 8581fd662043dbfad4a2b68e561d21c106e4754b6f21c4d06cfb9b3d5e2b0a39 encontró un error durante hcsshim::System::CreateProcess: error en una llamada al sistema de Windows: No se puede encontrar el archivo especificado. (0x2).

¿Cuál puede ser el problema?
¿Por qué no puedo obtener un terminal de PowerShell dentro del contenedor?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Posibles razones para el error y la incapacidad de obtener un indicador de PowerShell dentro del contenedor podrían ser:

    1. Problemas de permisos: El mensaje de error “No se puede usar el flujo de archivo para [C:\app\bin\Debug\net6.0\WebApplication5.runtimeconfig.json]: Permiso denegado” sugiere que el contenedor puede no tener suficientes permisos para acceder al archivo. Verifique si el contenedor se está ejecutando con privilegios suficientes.
    2. Archivo faltante: El mensaje de error “runtimeconfig.json no válido [C:\app\bin\Debug\net6.0\WebApplication5.runtimeconfig.json]” podría indicar que falta el archivo o que está corrupto. Verifique si el archivo existe y es accesible desde el interior del contenedor.

    3. Versión incompatible de .NET Framework: El mensaje de error “El proceso de destino se cerró sin generar un evento de inicio de CoreCLR. Asegúrese de que el proceso de destino esté configurado para usar .NET Core” sugiere que es posible que la aplicación no esté configurada para ejecutarse en .NET Core. Verifique si la aplicación está utilizando el marco de trabajo .NET correcto.

    Para solucionar el problema, puede intentar los siguientes pasos:

    1. Verifique si el archivo WebApplication5.runtimeconfig.json existe y es accesible dentro del contenedor. Puede hacer esto ejecutando el comando “docker exec webapplication5 ls /app/bin/Debug/net6.0/”.

    2. Verifique si el contenedor se está ejecutando con privilegios suficientes. Puede intentar ejecutar el contenedor con privilegios elevados agregando la opción “–privileged” al comando “docker run”.

    3. Verifique si la aplicación está configurada para ejecutarse en .NET Core. Puede intentar agregar la opción “-f net6.0” al comando “dotnet build” en el archivo Dockerfile para especificar que la aplicación debe compilarse para .NET Core 6.0.

    4. Intente usar una imagen de Docker diferente para el entorno de compilación y/o tiempo de ejecución. También puede intentar reconstruir la imagen de Docker desde cero para asegurarse de que todas las dependencias se instalen correctamente.

    5. Si ninguno de los pasos anteriores funciona, es posible que necesite consultar la documentación oficial o buscar ayuda en los foros de la comunidad .NET para solucionar el problema.

Comments are closed.