27 votes

InvalidOperationException: impossible de trouver 'UserSecretsIdAttribute' de l'assemblée

Après le déploiement de ASP.NET Core application d'azur et de l'ouverture du site, j'obtiens l'erreur suivante:

InvalidOperationException: impossible de trouver 'UserSecretsIdAttribute' sur l'assembly '******, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null".

Les détails de l'exception comprennent également que l'erreur se produit au Démarrage.cs sur cette ligne de code:

générateur de rapports.AddUserSecrets();

Merci

41voto

juunas Points 19242

Il y avait une mise à jour les secrets de l'utilisateur module tout récemment. La Version 1.0.1 et exige maintenant que vous spécifiez une assemblée niveau de l'attribut de l'id de l'utilisateur secrets, ou comme un secours, la façon dont il a été précédemment dans le projet.json.

Voici l'annonce sur GitHub: https://github.com/aspnet/Announcements/issues/209

Vous pouvez définir les secrets de l'id dans le .csproj comme ceci:

<PropertyGroup>
  <UserSecretsId>aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed</UserSecretsId>
</PropertyGroup>

Cela génère la suite de l'assemblée niveau de l'attribut. Alternativement, au lieu de l'ajouter dans le .fichier csproj, bien sûr, vous pouvez ajouter vous-même par exemple pour le Démarrage.cs:

[assembly: UserSecretsId("aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed")]

Aussi, vous devez utiliser:

builder.AddUserSecrets<Startup>();

Il sera à la recherche de cet attribut dans l'assemblage d'un type donné, dans ce cas, j'ai utilisé le Démarrage de la classe.

Note: ce sera obsolète dans la version 2.0: (1.0.2 et 1.1.1 l'ont marquée obsolète)

builder.AddUserSecrets();

J'ai vérifié le code source pour les secrets de l'utilisateur configuration et en l'appelant AddUserSecrets() sans le type fait ceci:

var attribute = entryAssembly.GetCustomAttribute<UserSecretsIdAttribute>();
if (attribute != null)
{
     return AddUserSecrets(configuration, attribute.UserSecretsId);
}

// try fallback to project.json for legacy support
try
{
     var fileProvider = configuration.GetFileProvider();
     return AddSecretsFile(configuration, PathHelper.GetSecretsPath(fileProvider));
}
catch
{ }

// Show the error about missing UserSecretIdAttribute instead an error about missing
// project.json as PJ is going away.
throw MissingAttributeException(entryAssembly);

C'est en essayant de trouver l' UserSecretsId l'attribut de votre assemblée, et, à défaut, de vérifier si l'on pouvait trouver dans le projet.json. Puis (comme indiqué) renvoie une erreur sur le manque attribut, car ils ne veulent pas se plaindre du projet.json est plus comme il est désapprouvée.

5voto

TheGNUGuy Points 854

Je veux ajouter à cette réponse, pour les personnes dans ma situation.

Je suis en train d'écrire une .NET Core console application, essayez d'utiliser les secrets manager (pas sûr que ça signifiait pour console apps). La seule façon que j'ai pu me débarrasser de l'erreur à l'aide de l'assemblée niveau de l'attribut dans l'assemblée où j'ai été en utilisant les secrets manager.

Comme je l'ai dit, je ne suis pas sûr si les secrets manager est conçu pour la console de apps. Alors peut-être il ya un problème avec .xproj fichiers contre .csproj fichiers.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X