2016-11-20 8 views
21

に「UserSecretsIdAttribute」が見つかりませんでした紺碧にASP.NETのコアアプリケーションを展開し、サイトを開いた後、私は次のエラーを取得する:と、InvalidOperationException:アセンブリ

InvalidOperationException: Could not find 'UserSecretsIdAttribute' on assembly '******, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

例外の詳細は、エラーがで起こっていることなどがこのコード行にStartup.cs:

builder.AddUserSecrets();

は、ユーザーの秘密モジュールへのアップデートは、つい最近ありました

答えて

31

ありがとうございます。バージョン1.0.1以降では、ユーザーシークレットのIDとしてアセンブリレベルの属性を指定する必要があります。これは以前のproject.jsonと同じようにフォールバックとなります。 https://github.com/aspnet/Announcements/issues/209

あなたはこのような.csprojに秘密IDを定義することができます:

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

これは、次のアセンブリレベルの属性を生成し、ここで

はGitHubの上での発表です。また、.csprojファイルに追加する代わりに、自分で追加することもできます。 Startup.csに:また

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

、あなたが使用する必要があります。それは私がスタートアップクラスを使用し、この場合には、特定のタイプのアセンブリでその属性を検索します

builder.AddUserSecrets<Startup>(); 

注:これは2.0で廃止されます:私は、ユーザーの秘密の設定のためのsource codeをチェックし、なしAddUserSecrets()を呼び出す

builder.AddUserSecrets(); 

(1.0.2および1.1.1は廃止、それをマークしています)

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); 

あなたのアセンブリにUserSecretsId属性を検索しようとし、それを失敗し、それがproject.jsonでそれを見つけることができるかどうかのチェックです:型がこれを行います。そうすれば(コメントとして)欠落している属性についてのエラーが返されます。なぜなら、project.jsonについて非難されたくないからです。

+0

また、 'UserSecretsId'プロパティを持つプロジェクトに' Microsoft.Extensions.Configuration.UserSecrets'依存関係がない場合、その属性は作成されません。 –

+0

その依存関係がない場合は、ユーザーの秘密をまったく使用できないと思います。 – juunas

+0

私は一時的に(私が解決策の多くのプロジェクトの間に定型会話を共有していた「ベース」プロジェクトを介して)依存していました。私は一時的にそれを使用していたときに、アセンブリ属性が欠落していましたが、依存関係を直接追加すると、エラーはなくなりました。 –

2

私の場合はanswerに追加したいと思います。

私は、.NET Coreコンソールアプリケーションを作成しています。秘密マネージャーを使用しようとしています(コンソールアプリケーション用ではありません)。私がエラーを取り除くことができた唯一の方法は、シークレットマネージャを使用していたアセンブリのアセンブリレベル属性を使用することでした。

私が言ったように、秘密のマネージャーがコンソールアプリケーション用であるかどうかはわかりません。ですから、.xprojファイルと.csprojファイルの問題があります。

+0

'project.json'に' userSecretsId'を追加しようとしましたか? – Alex78191

+0

@ Alex78191私はすでに複数のプロジェクトに移行しようとした後、project.jsonでこのエラーが発生しました。私はVSコードを使用しています –

関連する問題