gpt4 book ai didi

c# - 在子应用程序中阻止 web.config 继承

转载 作者:行者123 更新时间:2023-12-03 14:53:41 24 4
gpt4 key购买 nike

我们有一个遗留的 .NET 解决方案,它结合了 MVC 和 WebForms 的东西,以及一些 Web API 项目作为网站根目录下的应用程序。显然,这些 Web API 应用程序将继承网站的 web.config 设置。

我们还有另一个项目——一个有界上下文——用于 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 来存储我们的 secret ,为了在本地处理这些 secret ,我们使用了 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 包,我会收到消息...

This package may not be fully compatible with your project.



...它会自动回滚。

所以如果我不能引用 UserSecrets .NET Core 子应用程序中的程序集,那么我怎样才能让它识别 <configBuilders>继承的配置文件中的部分?

我也试过删除元素......
<configSections>
<section name="configBuilders" />
</configSections>

...来自根配置文件,但子应用程序随后会看到 <configBuilders>元素并且无法识别它。

所以问题归结为:
  • 子应用程序需要一个 NuGet 包,其中 <configBuilders>元素被定义。
    如果没有...
  • 子应用看到<configSections>/<section name="configBuilders" />元素并需要知道这是在哪里定义的。
    或者,我删除了 <section name="configBuilders" />子应用程序中的元素,然后...
  • 子应用看到<configBuilders>元素并需要知道哪个配置部分定义了它。
  • 最佳答案

    在另一个虚拟目录中发布 WEB API。
    创建重定向或重写规则以将 Web API 流量路由到此虚拟目录。

    关于c# - 在子应用程序中阻止 web.config 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61662062/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com