było to aktualizacja modułu tajemnic użytkownik niedawno. Wersja 1.0.1 i nowsze wymaga teraz określenia atrybutu na poziomie zespołu dla identyfikatora tajnego klucza użytkownika lub jako rezerwowego, tak jak poprzednio w pliku project.json.
Oto zapowiedź na GitHub: https://github.com/aspnet/Announcements/issues/209
Można zdefiniować id tajemnic w .csproj jak ten:
<PropertyGroup>
<UserSecretsId>aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed</UserSecretsId>
</PropertyGroup>
Generuje następujący atrybut montaż poziomu. Zamiast dodawać je do pliku .csproj, możesz oczywiście dodać go samodzielnie, np. do Startup.cs:
[assembly: UserSecretsId("aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed")]
Ponadto, należy użyć:
builder.AddUserSecrets<Startup>();
To będzie szukać tego atrybutu w zespole danego typu, w tym przypadku użyłem klasy startowego.
Uwaga: to będzie przestarzałe w 2.0: (1.0.2 i 1.1.1 zostały oznaczone je przestarzałe)
builder.AddUserSecrets();
Sprawdziłem source code dla konfiguracji tajemnic użytkowników i dzwoni bez AddUserSecrets()
typ to robi:
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);
on próbuje znaleźć atrybut UserSecretsId
na swoim zespole, a w przypadku jego braku, sprawdzając, czy to może go znaleźć w project.json. Następnie (w komentarzach) zwraca błąd dotyczący brakującego atrybutu, ponieważ nie chcieliby już narzekać na projekt.json, ponieważ jest on przestarzały.
Ponadto, jeśli nie masz zależności 'Microsoft.Extensions.Configuration.UserSecrets' w projekcie, który ma właściwość' UserSecretsId', atrybut nie zostanie utworzony. –
Jeśli nie masz takiej zależności, nie sądzę, aby w ogóle można było używać tajemnic użytkownika. – juunas
Zależało mi na przejściach (poprzez "bazowy" projekt miałem wspólne bloki pomiędzy wieloma projektami w rozwiązaniu).Kiedy używałam go przejściowo, brakowało atrybutu złożenia, ale gdy dodałem zależność bezpośrednio, błąd zniknął. –