Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

861
Visualizações
el archivo de configuración 'secrets.json' no se encontró y no es opcional (.NET 6)

El error de secretos de usuario se genera en una canalización de CI/CD, cuando no se debe esperar el archivo secrets.json.

Pasos:

  1. Crear proyecto .NET 5
  2. Se agregaron secretos de usuario.
  3. El código se ejecuta localmente y en canalizaciones de CI/CD.
  4. Actualice al proyecto .NET 6 (y obtenga una vista previa de los paquetes NuGet 6.*)

El código se ejecuta localmente, pero falla en las canalizaciones de CI/CD, con el siguiente error:

"No se encontró el archivo de configuración 'secrets.json' y no es opcional".

Previsto:

El código se ejecuta sin que esté presente el archivo secrets.json Configuración .NET 6, Microsoft.Extensions.Configuration.UserSecrets: 6.0.0-preview.1.21102.12

¿Regresión? Esto funciona en .NET 5, Microsoft.Extensions.Configuration.UserSecrets: 5.0.0.*

 System.IO.FileNotFoundException: The configuration file 'secrets.json' was not found and is not optional. The physical path is '/home/runner/work/UserSecretsRegression/UserSecretsRegression/UserSecrets/UserSecrets.Tests/bin/Release/net6.0/secrets.json'. Stack Trace: at Microsoft.Extensions.Configuration.FileConfigurationProvider.HandleException(ExceptionDispatchInfo info) at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload) at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load() at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers) at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build() at UserSecrets.Tests.UnitTest1.TestMethod1() in /home/runner/work/UserSecretsRegression/UserSecretsRegression/UserSecrets/UserSecrets.Tests/UnitTest1.cs:line 13
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

En .net 6.0, la aplicación necesita secret.json para ejecutarse. en cualquier caso, si estás migrando desde .net core 3.1 o .net 5.0 para ejecutar tu aplicación en .net 6.0:

  1. ejecute dotnet user-secrets init en la carpeta de su proyecto usando herramientas de línea de comandos.
  2. asegúrese de tener un archivo secret.json en el dominio de su aplicación ...\bin\Debug\net6.0 . No importa si su archivo secret.json está vacío por ahora.

¡Presiona F5 y ejecuta tu aplicación!

over 4 years ago · Santiago Trujillo Relatório

0

https://github.com/dotnet/runtime/issues/48485

Básicamente, es una característica nueva en .NET6 que 'secrets.json' no es opcional de forma predeterminada.

 AddUserSecrets(this IConfigurationBuilder configuration, Assembly assembly, bool optional);

Ese parámetro 'opcional' debe establecerse en 'verdadero' en su código.

 var configuration = new ConfigurationBuilder() .AddEnvironmentVariables() .AddCommandLine(args) .AddJsonFile("appsettings.json") .AddUserSecrets<Program>(true) .Build();
over 4 years ago · Santiago Trujillo Relatório

0

A diferencia de las variables de entorno, los secretos de usuario se colocan en un archivo de configuración similar a appsettings.json . Tener configuraciones fuera del proyecto estructuradas similares es excelente cuando necesita copiar claves y valores entre archivos y hay soporte para agregar, eliminar y enumerar valores, como le mostraré más adelante en esta publicación.

Para comprender los secretos de los usuarios, retomemos el ejemplo de la publicación anterior. Allí tenía un archivo appsettings.json con este aspecto:

 { "AppSettings": { "ConnectionString": "http://localhost:9000" }, ... }

Para anular la AppSettings:ConnectionString en máquinas individuales, cada usuario debe agregar un secreto de usuario con el mismo nombre. El enfoque más sencillo es hacer clic con el botón derecho en el proyecto y seleccionar Administrar secretos de usuario :

ingrese la descripción de la imagen aquí

Esto crea y abre un nuevo archivo JSON vacío llamado secrets.json . El archivo se coloca debajo de C:\Users\<username>\AppData\Roaming\Microsoft\UserSecrets\<id> donde <username> coincide con su usuario de Windows y es un GUID generado aleatoriamente. Lo importante a tener en cuenta aquí es que el archivo se encuentra fuera del directorio de su proyecto. Para "vincular" la ubicación del archivo secrets.json a su proyecto, Visual Studio agregó un poco de marcado al archivo csproj :

 <PropertyGroup> <UserSecretsId>dda25df4-9a88-4a7e-8502-2134b74e4729</UserSecretsId> </PropertyGroup>

En caso de que no esté usando Visual Studio, puede generar un GUID aleatorio y agregar el <UserSecretsId> manualmente.

En caso de que desee anular la AppSettings:ConnectionString , agregue una estructura similar al archivo secrets.json :

 { "AppSettings": { "ConnectionString": "http://localhost:9000?user=mehdidaustany&password=1234" } }

También puede colapsar configuraciones como esta:

 { "AppSettings:ConnectionString": "http://localhost:9000?user=mehdidaustany&password=1234" }

Finalmente, agregue secrets.json creado en la raíz de su proyecto.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda