实际上,我试图在Azure密钥存储库秘密后面保护用于AzureWebJobsDashboard和AzureWebJobsStorage的存储连接字符串。我无法使用注入的KeyVault服务来获取它,因为我的服务容器尚未构建。所以我发现(通过上面的链接)我可以在配置中使用“@microsoft.keyvault()”表达式来表达这个意图。下面是一个示例,我将配置移到内联代码中,以保持简洁:
.ConfigureHostConfiguration(configurationBuilder =>
{
configurationBuilder
.AddConfiguration(configuration)
.AddInMemoryCollection(new Dictionary<string, string>
{
["ConnectionStrings:AzureWebJobsDashboard"] = "@Microsoft.KeyVault(SecretUri=https://host.vault.azure.net/secrets/secret-name/ec545689445a40b199c0e0a956f16fca)",
["ConnectionStrings:AzureWebJobsStorage"] = "@Microsoft.KeyVault(SecretUri=https://host.vault.azure.net/secrets/secret-name/ec545689445a40b199c0e0a956f16fca)",
});
})
如果我运行这个,我会得到:
FormatException:找不到有效的帐户信息组合。
我浏览了大量在线资源,所有内容似乎都表明,特殊修饰的@microsoft.keyvault设置仅在Azure门户上的AppSettings中的值起作用,而不是在本地配置中。有人请让我知道如果这是一个不正确的评估。
因此,为了解决这个问题,我提出了一个解决方案,老实说,这个解决方案感觉有点笨拙,因为我依赖于这样一个事实,即连接字符串在主机运行之前(不是在构建期间)不会从本地配置读取/缓存。基本上,这个想法是构建一个配置提供程序,我可以在构建主机后为它设置一个值。例如:
public class DelayedConfigurationSource : IConfigurationSource
{
private IConfigurationProvider Provider { get; } = new DelayedConfigurationProvider();
public IConfigurationProvider Build(IConfigurationBuilder builder) => Provider;
public void Set(string key, string value) => Provider.Set(key, value);
private class DelayedConfigurationProvider : ConfigurationProvider
{
public override void Set(string key, string value)
{
base.Set(key, value);
OnReload();
}
}
}
在宿主生成器构造过程中添加对此类型的引用:
var delayedConfigurationSource = new DelayedConfigurationSource();
var hostBuilder = new HostBuilder()
.ConfigureHostConfiguration(configurationBuilder =>
{
configurationBuilder
.AddConfiguration(configuration)
.Add(delayedConfigurationSource);
})
...
var host = hostBuilder.Build();
using (host)
{
var secretProvider = host.Services.GetRequiredService<ISecretProvider>();
var secret = await secretProvider.YourCodeToGetSecretAsync().ConfigureAwait(false);
delayedConfigurationSource.Set("ConnectionStrings:AzureWebJobsStorage", secret.Value);
await host.RunAsync().ConfigureAwait(false);
}
问题内容: 我需要从两个字符之间获取字符串。我有这个 并且必须在一个变量中分别返回4个字符串: 问题答案: 有。由于它接受正则表达式字符串,并且是正则表达式中的特殊字符,因此您需要对其进行转义(带有反斜杠)。而且,由于是在Java中字符串字面特殊字符,你需要逃脱 它 ,也一样,人们有时会感到迷惑。因此给出: 然后 将输出 ( 在 前三位上 有 尾随空格;如果需要,这些空格。)
我正在使用Azure设备预配服务(DPS)自动向Azure IoT中心注册和预配设备。 我想得到一个特定设备的孪生设备。 我可以通过使用de DeviceClient类来管理设备双胞胎: 但是我想通过使用RegistryManager获取设备,它需要特定IoTHub的连接字符串。 是否可以从DPS、连接的设备或IoT中心名称(即结果)中获取IoT中心连接字符串。AssignedHub)?我正在使用
问题内容: 我想仅匹配URL的根,而不匹配文本字符串中的整个URL。鉴于: 我想将最后2个实例解析为或域。 我听说正则表达式很慢,这将是我在页面上的第二个正则表达式表达式,因此,如果仍然需要不使用正则表达式,请告诉我。 我正在寻找此解决方案的JS / jQuery版本。 问题答案: 我建议使用npm软件包psl公共后缀列表。“公共后缀列表”是所有有效域后缀和规则的列表,不仅包括国家/地区代码顶级域
我已经用SQL Server Management Studio创建了一个数据库,现在我想在我的C#应用程序中使用它。我需要连接字符串? 如何发布数据库,以便Visual Studio可以获取它?然后我就可以拉出那里的连接字符串了?
问题内容: 我正在使用Retrofit1旧样式 现在,我不想获取“ User”类,但是我想要获取String响应。 以前我们使用的是“ Response”,但是在改造2中没有“ Response”, 我如何在不使用任何json解析的情况下从服务器获取字符串响应或全身响应? 问题答案: 建立这个课程 与它一起使用 编辑: 您必须将其定义为 retrofit2不支持回调,因此您必须删除它。要使其异步,
我想从天蓝色密钥库获取秘密。当我独立于主方法运行类时,它返回秘密,但当我在代码行future.get()处集成了这个相同的代码在servlet应用程序中;在这里它得到块,它不会像死锁一样继续前进,它一直在等待,有时会得到java.util.concurrent.执行异常:java.lang.ClassCastExctive:java.lang.字符串不能被强制转换为java.util.列表和com