【问题标题】:web.config, configSource, and "The 'xxx' element is not declared" warningweb.config、configSource 和“未声明‘xxx’元素”警告
【发布时间】:2015-07-24 22:27:14
【问题描述】:

我已使用 configSource 属性将极其笨拙的 web.config 文件分解为某些部分(例如连接字符串、身份验证、页面等)的单独文件。

这工作正常,但是包含“sn-ps”部分的单个 xml 文件会在 VS 中引起警告。

例如,名为 roleManager.config 的文件用于角色管理器部分,如下所示:

<roleManager enabled="false">
</rolemanager>

但是我在 VS 中的 roleManager 元素下得到一个蓝色波浪线,并出现以下警告:The 'roleManager' element is not declared

我想这与有效的 xml 和架构等有关。有没有简单的方法来解决这个问题?我可以添加到各个文件中吗?

谢谢

附:我听说像这样破坏 web.config 文件是不好的做法。但真的不明白为什么 - 谁能照亮我?

【问题讨论】:

  • 我不明白为什么这是不好的做法。请注意,更改这些 .config 文件不会导致 Web 应用重新启动(就像您编辑了 web.config 本身一样)
  • 没有意识到 - 谢谢,很高兴知道。
  • 使用 configSource 属性的一个好处是,如果您必须将代码交给其他人以将其放置在他们公司的服务器中,他们可以很容易地看到他们需要在 Web 配置中更改的内容(connectionStrings等...) 为他们的环境。
  • 仅供参考 - 您可以添加一个属性来对这些文件进行更改,从而在修改时触发重新启动。 restartOnExternalChanges="true"来源:learnable.com/books/…

标签: asp.net xml visual-studio web-config


【解决方案1】:

使用自定义配置文件搜索此问题的解决方法,我找到了此解决方案。不知道是不是正确的。

问题是 VS 无法找到验证您的 .config (xml) 的架构。如果您使用“本机”配置元素,或者在创建自定义 .config 文件时,您必须为每个 xml 文档设置一个架构。

默认情况下(例如在 VS9 中)所有 xml 文件都使用 \Microsoft Visual Studio 9.0\Xml\Schemas\DotNetConfig.xsd 但是你可以添加更多的模式来使用。

在分配架构之前,您必须先创建它。

根据您自己的 custom.config 创建新的 Schema:

  1. 打开您的自定义配置文件
  2. 在菜单栏 XML->创建架构
  3. 保存

分配您的架构:

  1. 打开您的自定义配置文件
  2. 在属性面板中:单击浏览按钮 [..]
  3. 将“使用”列设置为您最近创建的架构

您可以分配任意数量。或者为所有不同的自定义 .config 文件使用一个架构

(对不起,我的英文不太好)

【讨论】:

  • 工作正常。顺便说一句,VS2012 会自动将新创建的架构添加到分配给您的 XML 文件的架构列表中。
  • 这也消除了我的 Web.config for asmx SOAP 项目中报告的奇怪架构错误。
  • 分配您的架构在 VS 2015 中,顶部菜单 / Xml / Schemas... / Add.. 然后选择第一步生成的 xsd 文件。
【解决方案2】:

我认为你得到了蓝色曲线,因为你的 web.config 文件的架构没有声明这些你已经“分解”成单个文件的自定义配置部分。

在对此进行调查时,我发现我的一些解决方案存在相同的问题,但 microsoft 提供的配置部分没有曲线。例如:我们已经将 appsettings 和 connectionstrings 提取到它们自己的文件中,它们没有得到 squiggles,但我们自定义的却有。

我尝试在 schemas.microsoft.com/.netconfiguration/v2.0 上查看 microsoft 架构,但尝试下载时收到 404。

我想说的是,如果您获得 MS 架构的副本并将其更改为包含您的外部配置文件,您应该能够摆脱可怕的曲线!

HTH, 兰斯

【讨论】:

  • 谢谢兰斯我会调查的。我注意到某些部分没有引起问题的类似情况。在我看来,直接在 (根)元素下的部分没有问题(例如连接字符串),而在根下一级的部分(例如角色管理器,它位于 确实有问题。
猜你喜欢
  • 2011-10-10
  • 1970-01-01
  • 2015-08-13
  • 1970-01-01
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
相关资源
最近更新 更多