代码之家  ›  专栏  ›  技术社区  ›  Val

如何调试.NET中的配置文件?

  •  3
  • Val  · 技术社区  · 14 年前

    我有一个visualstudio项目最近开始抛出ConfigurationErrorsException,我不知道它是从哪里来的。我到处找,找不到类似的错误,而且我的任何一个队友在他们的电脑上运行项目时都不会出现这种情况。

    我非常希望至少能够看到加载了哪些文件,检索了哪些节、键等,以及在加载后续配置文件时覆盖了哪些值。

    仅供参考,该项目是一个在VisualStudio2008中使用.NET3.5编辑的InfoPath表单项目。当窗体第一次加载时发生异常;方法尝试从配置文件获取Web服务URL:

    _clmWebSrvc.Url = System.Configuration.ConfigurationSettings.AppSettings["CLMUtilityWebServiceUrl"];
    

    System.Configuration.ConfigurationErrorsException
    The configuration section 'connectionStrings' has an unexpected declaration.
       at System.Configuration.ConfigurationManager.get_ConnectionStrings()
    

    connectionStrings 任何地方;以前有一个默认的 machine.config ,但我早就删除了它,因为它在我维护的一些web应用程序中引起了冲突。在Infopath.exe.config中,以及继承链中的任何其他配置文件中,都没有类似的内容。我停止了在本地IIS中运行的独立网站。我重新安装了VS2008,InfoPath,清除了InfoPath FormCache,重命名了我的用户配置文件,重新启动了我的电脑,以完全不同的用户身份登录,所有这些都没有任何效果。

    正如你所见,这些都是笨拙的,绝望的尝试,以找出什么配置文件影响应用程序。我真正想要的是一个实用程序,它会准确地显示正在加载的内容。有这样的动物吗?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Mike Atlas    14 年前

    退房 Process Monitor

    然后,你也可以雇用 Red Gate .NET Reflector ,这将允许您进入.NET类(如ConfigurationManager),以便可以直接调试到引发异常的实际源。

        2
  •  1
  •   Marc    14 年前

    对您的问题的一个回应(但可能不是答案)是下载.NET的符号文件(当然,它包括您的配置程序集)。

    我不记得它是否在2008年的调试选项中预先填充,但这里有一篇Hanselman的帖子以防万一: .NET Framework Library Source Code available for viewing

        3
  •  1
  •   to StackOverflow    14 年前

    如果缺少connectionStrings部分,则会引发此错误。

    您的错误是从machine.config中删除了connectionStrings节,.NET Framework的某些部分要求此节存在。

    不应手动修改machine.config。相反,任何有问题的应用程序都应该使用

    <connectionStrings>
        <clear/>
    </connectionStrings>
    

    这将清除machine.config中定义的所有连接字符串。