Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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
C# 为什么<;清晰></清晰>;与<;清除/>;在app.config中?_C# - Fatal编程技术网

C# 为什么<;清晰></清晰>;与<;清除/>;在app.config中?

C# 为什么<;清晰></清晰>;与<;清除/>;在app.config中?,c#,C#,有人能告诉我为什么app.config与中的无效的技术原因吗 它通常是这样使用的: <connectionStrings> <clear/> <add etc..... /> </connectionStrings> 问题是我使用的安装程序产品(InstallShield)将xml转换为app.config文件,它正在将更改为 这会中断应用程序(服务甚至无法启动) 现在我只是在寻找技术上的解释,但如果你有任何解决办法,那也会很好 使用似乎

有人能告诉我为什么app.config与
中的
无效的技术原因吗

它通常是这样使用的:

<connectionStrings>
 <clear/>
 <add etc..... />
</connectionStrings>

问题是我使用的安装程序产品(InstallShield)将xml转换为app.config文件,它正在将
更改为

这会中断应用程序(服务甚至无法启动)


现在我只是在寻找技术上的解释,但如果你有任何解决办法,那也会很好

使用
似乎会中断ConnectionString部分的解析(如果在那里使用,可能还会中断其他部分)。有关可能的解释,请参见Hans Passant的评论

如果存在
,则
ConfigurationManager.ConnectionString
为空。因此,服务崩溃的原因可能是,您没有检查此集合是否包含任何元素,或者尝试通过
ConfigurationManager.ConnectionString[“NameOfConnection”]
访问它们,如果没有包含该键的元素,则会引发异常

可能的解决方法(我认为这两种方法都相当笨拙和粗糙)

  • 您可以删除
    。这可能会导致某些引用的程序集创建一些附加的连接字符串。但是,由于您自己的connectionstring应该位于此集合的末尾,因此您可以删除不需要的条目

  • 将自定义任务添加到安装例程中,该例程在后面的一个步骤中处理app.config文件,并将
    替换为


  • 启动服务时出现了什么错误?该语法仍然有效,应该没有失败的原因。随机猜测:
    解析为
    null
    ,但
    解析为空字符串。虽然人们很容易认为它们是同一件事,但在某些情况下,你会想知道它们之间的区别。@MatthewWalton这种区别是官方的XML规则还是MSXML解析器的实现细节?@StéphaneGourichon:是的:-P见。标准对此并不完全明确。这可能与CLR解析.config文件的方式有关。为了最小化外部依赖的数量,它不依赖于类似MSXML的东西,解析器由CLR团队编组在一起,并用C++代码编写。当然,像这样的事故很可能发生。令人震惊的是InstallShield如此频繁地出错。求助于9岁了,还没有固定下来,为什么那家公司仍在经营是一个更大的问题:(这个建议很贴切。实际上,我最终选择了第二种选择。