我们有一个遗留的.NET解决方案,其中包括MVC和WebForms,并且还有一些Web API项目作为网站根目录下的应用程序。显然,这些Web API应用程序将继承网站的web.config设置。
我们还有另一个项目——边界上下文——用于SSO身份验证,它位于相同的根文件夹内,因此也继承了网站的web.config设置。这个边界上下文应用程序是使用.NET Core构建的。
我们最近开始使用Azure Key Vault来存储我们的机密,并且为了在本地处理这些机密,我们正在使用secrets.xml文件。所以根网站的web.config如下:...
这里的问题是:身份验证有关的项目抛出异常,因为它找不到 Microsoft.Configuration.ConfigurationBuilders.UserSecrets 程序集 - 因为它继承了网站的配置,所以需要知道该配置部分的全部内容。
但如果在 .NET Core 身份验证项目中引用 NuGet 包,我会收到以下消息...
“此软件包可能与您的项目不完全兼容。”
...并且自动回滚。
因此,如果无法在 .NET Core 子应用程序中引用 UserSecrets 程序集,则如何使其识别继承的配置文件中的 部分呢?
我还尝试过删除这个元素...
我们还有另一个项目——边界上下文——用于SSO身份验证,它位于相同的根文件夹内,因此也继承了网站的web.config设置。这个边界上下文应用程序是使用.NET Core构建的。
- wwwroot // .NET Framework
- API 1 // .NET Framework
- API 2 // .NET Framework
- ...
- SSO / authentication // bounded context, built in .NET Core
我们最近开始使用Azure Key Vault来存储我们的机密,并且为了在本地处理这些机密,我们正在使用secrets.xml文件。所以根网站的web.config如下:...
<configSections>
<section name="configBuilders" ... />
</configSections>
<configBuilders>
<builders>
<add name="Secrets" optional="false" userSecretsFile="~\secrets.xml" [elided attributes] />
</builders>
</configBuilders>
<appSettings configBuilders="Secrets">
<add key="a_key" value="value specified in secrets.xml" />
...
</appSettings>
这里的问题是:身份验证有关的项目抛出异常,因为它找不到 Microsoft.Configuration.ConfigurationBuilders.UserSecrets 程序集 - 因为它继承了网站的配置,所以需要知道该配置部分的全部内容。
但如果在 .NET Core 身份验证项目中引用 NuGet 包,我会收到以下消息...
“此软件包可能与您的项目不完全兼容。”
...并且自动回滚。
因此,如果无法在 .NET Core 子应用程序中引用 UserSecrets 程序集,则如何使其识别继承的配置文件中的 部分呢?
我还尝试过删除这个元素...
<configSections>
<section name="configBuilders" />
</configSections>
问题实质是:
- 子应用程序需要一个NuGet包,其中定义了
<configBuilders>
元素。
如果没有... - 子应用程序看到了
<configSections>
/<section name="configBuilders" />
元素,并需要知道这是在哪里定义的。
或者,我可以从子应用程序中删除那个<section name="configBuilders" />
元素,然后... - 子应用程序看到了
<configBuilders>
元素,并需要知道哪个配置部分定义了它。
从根配置文件继承配置,在子应用程序中看到 <configBuilders>
元素,但无法识别它。