1

我按照本指南设置 Azure 应用程序配置。

但我想我误解了这一行:

dotnet user-secrets set ConnectionStrings:AppConfig "Endpoint=<your_endpoint>;Id=<your_id>;Secret=<your_secret>"

更确切地说; 什么是什么...

  • your_endpoint = 我设置了我的主键连接字符串(从 Azure 中的应用程序配置资源复制)
  • your_id = guid 设置为 UserSecretsId(在指南中提高了几步)
  • your_secret = 密钥的密钥(指南中的 ConnectionStrings:AppConfig)

但后来我的程序总是崩溃:

config.AddAzureAppConfiguration(settings["ConnectionStrings:AppConfig"]);

除了:

System.FormatException HResult=0x80131537 Message=输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非法字符。Source=System.Private.CoreLib StackTrace:在 System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength) 在 System.Convert.FromBase64String(String s) 在 Microsoft.Azure.AppConfiguration.Azconfig.AzconfigClient..ctor(String connectionString, HttpMessageHandler httpMessageHandler, Boolean disposeHandler) 在 Microsoft.Extensions.Configuration.AzureAppConfiguration.AzureAppConfigurationSource.Build(IConfigurationBuilder builder) 在 Microsoft.Extensions.Configuration.ConfigurationBuilder.Build() 在 Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices(AggregateException&

执行此代码块时(来自指南):

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((hostingContext, config) =>
    {
        var settings = config.Build();
        config.AddAzureAppConfiguration(settings["ConnectionStrings:AppConfig"]);
    })
    .UseStartup<Startup>();

右键单击项目-> 管理用户机密我有这个 json 文件:

 {
    "Movies:ServiceApiKey": "12345",
    "ConnectionStrings:AppConfig": "Endpoint=<Primary Key Connection String copied value from azure resource>;Id=<the UserSecretsId tag in csproj file>;Secret=<the Key value in App Configuration resource>"
 }

值得注意; 我的主键连接字符串包含字符 ';'、'-'、'+' 和 '=' 但这些不应该是非法字符...

4

2 回答 2

1

The key here is not to interpret the segments of the connection string but instead take it as an opaque token. The connection string can be copied directly from the portal or obtained through the azure CLI

az extension add -n appconfig
az appconfig credential list -n <your-app-configuration-name>

Once you have the connection string, the exact, complete value should be used for the call to AddAzureAppConfiguration. Most likely the 'Secret' part of your connection string will end with a '=' character, and I'm suspecting that it was not copied over.

于 2019-03-25T19:36:50.383 回答
0

想到两件事:

  1. 确保从与 csproj 文件所在的目录相同的目录运行 add secrets 命令。
  2. 用户机密仅在本地执行时才有效。因此,如果您在远程某处执行,那么它将失败。 当 EnvironmentName 为 Development 时,CreateDefaultBuilder 调用 AddUserSecrets:

如果您在 .net 核心中使用它,您可以在配置中的 launch.json 中指定以下内容:

"env": {
    "ASPNETCORE_ENVIRONMENT": "Development"
},
于 2020-09-03T18:50:12.120 回答