我正在尝试使用以下代码访问“ web.config”文件的一部分
public static string XMLCheck
{
get
{
var section = (Hashtable)ConfigurationManager.GetSection("Default.Framework");
return (string)section["ConnectionString"];
}
}
但是以Unable to cast object of type 'System.Configuration.ConfigXmlElement' to type 'System.Collections.Hashtable'
的身份被执行,这是怎么了?如何改正
?
更新
<Resources>
<Resource Uri="resource:Default:CrossDomain" Version="1.0" Id="8ae96c54" IsEnabled="True" Handler="handler:Default:Framework:Resources:Data:Oracle">
<Properties>
<Property Name="ConnectionString" Value="Data Source=TESTDB;User Id=TESTUSR;password=TESTPWD;Persist Security Info=false"/>
</Properties>
</Resource>
</Resources>
答案 0 :(得分:1)
验证您的web.config中的configSections
项是DictionarySectionHandler
:
<configuration>
<configSections>
<section name="Default.Framework" type="System.Configuration.DictionarySectionHandler" />
</configSections>
<configuration>
从更新后的代码中,您似乎正在使用为其config部分定义自定义XML结构的库或框架。通常,您将依靠此库通过其属性公开配置设置。如果您真的想解析XML,可以使用如下所示的XPath:
public static string XMLCheck
{
get
{
var section = (XmlElement)ConfigurationManager.GetSection("Default.Framework");
var connectionString = section.SelectSingleNode(@"
descendant::Resource[@Uri='resource:Default:CrossDomain']
/Properties
/Property[@Name='ConnectionString']
/@Value");
return connectionString.Value;
}
}