Có một cập nhật cho các mô-đun bí mật người dùng chỉ cần thời gian gần đây. Phiên bản 1.0.1 trở lên bây giờ yêu cầu bạn chỉ định một thuộc tính mức assembly cho id của các bí mật của người dùng, hoặc như một dự phòng, cách mà nó đã có trước đó trong project.json.
Đây là thông báo trên GitHub: https://github.com/aspnet/Announcements/issues/209
Bạn có thể xác định những bí mật id trong csproj như thế này:
<PropertyGroup>
<UserSecretsId>aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed</UserSecretsId>
</PropertyGroup>
này tạo ra các thuộc tính lắp ráp cấp sau. Ngoài ra, thay vì thêm nó vào tệp .csproj, bạn có thể tự thêm nó, ví dụ: để Startup.cs:
[assembly: UserSecretsId("aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed")]
Ngoài ra, bạn nên sử dụng:
builder.AddUserSecrets<Startup>();
Nó sẽ tìm kiếm cho rằng thuộc tính trong lắp ráp các loại nhất định, trong trường hợp này tôi đã sử dụng lớp Startup.
Lưu ý: đây sẽ hết hạn vào 2.0: (1.0.2 và 1.1.1 đã đánh dấu nó lỗi thời)
builder.AddUserSecrets();
Tôi đã kiểm tra source code cho cấu hình bí mật người dùng, và kêu gọi AddUserSecrets()
mà không có sự loại thực hiện điều này:
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);
nó đang cố gắng tìm ra UserSecretsId
thuộc tính về lắp ráp của bạn, nhưng thất bại đó, kiểm tra nếu nó có thể tìm thấy nó trong project.json. Sau đó (như bình luận) trả về một lỗi về thuộc tính còn thiếu vì họ không muốn phàn nàn về project.json nữa vì nó không được dùng nữa.
Ngoài ra, nếu bạn không có phụ thuộc 'Microsoft.Extensions.Configuration.UserSecrets' trong dự án có thuộc tính' UserSecretsId', thuộc tính sẽ không được tạo. –
Nếu bạn không có sự phụ thuộc đó, tôi không nghĩ bạn có thể sử dụng bí mật của người dùng. – juunas
Tôi đã phụ thuộc vào trong thoáng qua (thông qua một "cơ sở" dự án tôi đã chia sẻ boilerplate giữa nhiều dự án trong một giải pháp).Khi tôi sử dụng nó một cách thoáng qua, thuộc tính assembly bị thiếu, nhưng khi tôi thêm trực tiếp sự phụ thuộc, lỗi đã biến mất. –