1

我有一个 ASP.NET 4.8 应用程序,我正在尝试将配置生成器集成到其中。我已经安装了 NuGet 包Microsoft.Configuration.ConfigurationBuilders.Environment并将所需的部分添加到Web.config(此处严重截断)。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false"/>
  </configSections>

  <configBuilders>
    <builders>
      <add name="EnvironmentExpand" mode="Expand" type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Environment" />
    </builders>
  </configBuilders>

  <system.serviceModel configBuilders="EnvironmentExpand">
....
  </system.serviceModel>
</configuration>

当我运行应用程序时,我会从每个操作中得到一个 HTTP 500 响应,并带有 message Unrecognized attribute 'configBuilders'。Visual Studio 中的 Intellisense 也突出显示configBuilders并表示The configBuilders attribute is not allowed.

如果我configBuilders从应用程序中删除该属性,system.serviceModel则可以正常运行,尽管该部分中的占位符当然都没有展开。

例如,如果我configBuilders从另一个部分中删除该属性system.serviceModel并将其添加到另一个部分,connectionStrings则应用程序将运行并且该connectionStrings部分中的占位符将被替换。

显然,该部分有些不同,system.serviceModel但我不明白我可以做什么或如何解决它,以便我可以在那里替换占位符。

4

1 回答 1

0

如果您查看您的 machine.config,您会发现它system.serviceModel是 asectionGroup而不是section. ConfigurationBuilders 仅适用于部分级别。无论好坏,WCF 和 ASP.Net 都将它们的大型配置分为多个部分。

于 2022-02-01T01:19:00.130 回答