Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调试.NET中的配置文件?_.net_Visual Studio_Debugging_Configuration Files_Config - Fatal编程技术网

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

如何调试.NET中的配置文件?,.net,visual-studio,debugging,configuration-files,config,.net,Visual Studio,Debugging,Configuration Files,Config,我有一个VisualStudio项目,最近开始抛出ConfigurationErrorsException,我不知道它是从哪里来的。我到处搜寻,找不到类似错误的东西,而且我的任何队友在他们的电脑上运行项目时都不会出现错误 有人对如何调试配置文件的加载和解析有什么具体的建议吗?由于ConfigurationManager是框架代码,我没有源代码,也无法使用Visual Studio调试器进行调试,因此我只能在黑暗中四处寻找 我非常希望至少能够看到加载了哪些文件,检索了哪些节、键等,以及在加载后续配

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

有人对如何调试配置文件的加载和解析有什么具体的建议吗?由于ConfigurationManager是框架代码,我没有源代码,也无法使用Visual Studio调试器进行调试,因此我只能在黑暗中四处寻找

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

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

_clmWebSrvc.Url = System.Configuration.ConfigurationSettings.AppSettings["CLMUtilityWebServiceUrl"];
失败的原因(仅限于我!)是:

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

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

谢谢

从系统内部(MSFT)检出。您应该在流程中对其进行过滤,这将允许您查看它试图打开的文件以及它正在查看的位置


然后,您还可以使用,这将允许您进入.NET类,如ConfigurationManager,以便您可以直接调试到引发异常的实际源。

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

我不记得它是否在2008年的调试选项中预先填充,但这里有一篇Hanselman的帖子以防万一:

如果缺少ConnectionString部分,则可能引发此错误

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

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

<connectionStrings>
    <clear/>
</connectionStrings>


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

我知道Process Monitor,这是我的下一步——至少它会显示正在使用的文件——但不会显示.NET Reflector。谢谢你的提示;去下载吧!您对@Joe的回答的评论是正确的——您提供了了解情况的最佳方法。我甚至把我的实际问题说成是旁白,因为我要求的是一个普遍的解决方案。对不起,我很专注于真正的问题,工具只是一种方法。我要说,.NET Reflector对我不起作用--一直崩溃,然后当我将该部分添加回machine.config时,我放弃了。不管怎样,谢谢你帮我澄清!我的第一步是询问我的同事的机器,这样可能会少一些兔子洞。这很酷——但它似乎要求您通过.NET调用返回到自己的代码中,以便您可以使用调用堆栈窗口加载.NET符号。然后在随后的调用中,您可以单步进入.NET代码。我被卡住了,因为之前没有打电话给ConfigurationManager;当它被命中时,异常会立即抛出。这很有效——谢谢!我很久以前就把那部分拿出来了;当时它解决了一些问题,但又回来咬我。很遗憾看到你接受了这一正确答案——虽然这是纠正问题的方法,但你只是问如何最好地调试问题,而不是什么可能导致问题。我知道这有点迂腐,但我的答案通常可能更有用,而这个答案只对这个非常具体的错误消息更有用。
<connectionStrings>
    <clear/>
</connectionStrings>