【发布时间】:2021-04-23 07:47:34
【问题描述】:
您好,我有一个关于 Azure 密钥库和 IIS 的问题。所以我们的服务器提供商做了一个 Windows 补丁: 适用于基于 x64 的系统的 Windows Server 2016 累积更新(2021 年 4 月) (KB5001347) 适用于基于 x64 的系统的 Windows Server 2016 服务堆栈更新(2021 年 4 月)(KB5001402)
在此 Windows 补丁和服务器重新启动之后,我们从 web.config 到 Azure 中的 keyvault 的提取停止工作。
当 IIS 启动我们的应用程序时,它找不到 Microsoft.Configuration.ConfigurationBuilders.Azure 即使 DLL 位于 bin 文件夹中。
另一件重要的事情是,我们与位于其自己的文件 connectionstrings.config 中的数据库的连接字符串与 Azure Keyvault 配合得很好。
我们在同一台机器上的 Windows 服务也与 Azure Keyvault 配合得很好。
所以这个问题只会影响我们 web.config 中的 appsettings 部分。 我们尝试将 bin 文件夹添加到 web.config 中的 privatePath,但没有帮助
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;modulesbin"/>
这在我们的 STAGING 机器上非常有效,它具有相同的 Windows 更新并使用相同的配置。 有谁知道我们接下来可以做什么? 我们正在使用什么:
System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
<configBuilders>
<builders>
<add name="AzureKeyVault" vaultName=somevaultname"
type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure, Version=1.0.0.0, Culture=neutral"
vaultUri="somevaulturi"/>
</builders>
</configBuilders>
感谢您的帮助
编辑: 我们现在已经安装了更新的 Azure dll。 在服务器上安装了 Azure CLI。 我们现在在环境变量中使用 AZURE_TENANT_ID、AZURE_CLIENT_SECRET、AZURE_CLIENT_ID 而不是 AzureServicesAuthConnectionString。
重启后,webapp、services、connectionstring 停止工作。 事件查看器中的错误消息: 异常消息:加载配置文件时出错:指定的用户没有有效的配置文件。无法加载“Microsoft.Configuration.ConfigurationBuilders.Azure
在我们的舞台服务器上一切仍然正常。
【问题讨论】:
-
如果没有其他代码更改,您的服务对 Key Vault 的访问很可能已过期。您目前如何验证您的服务?您是否检查过任何服务主体或客户端证书没有过期或被删除?
标签: c# azure iis azure-keyvault