这里的许多其他问题都集中在System.Configuration.ConfigurationManager…对于我的问题,我需要从Spring对象中提取连接字符串,以确定连接到的服务器,并删除使用应用程序的测试版本的任何横幅/警告。这个想法是,如果应用程序连接到"sp1-…",则是一个生产版本。 如何读取嵌套在App.config xml上下文中的对象?注意,它存在于Hibernate对象之外,因此(在我看来)必须存储在Spring库变量中。 下面是我的应用程序的App.config的一部分。 如果给定一个正常的App.config设置,我将这样执行此操作: EDIT似乎XMLReader的方向是唯一的出路。在我看来有点野蛮,但这是我实现的工作代码:...
<spring>
<context>
<resource uri="config://spring/objects" />
</context>
<parsers>
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data" />
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data" />
</parsers>
<objects xmlns="http://www.springframework.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.net/tx" xmlns:db="http://www.springframework.net/database">
<db:provider id="DbProvider" provider="SqlServer-2.0" connectionString="Data Source=st1-dskdb;Integrated Security=true;Database=AmericaMe_Test;" />
<!-- HIBERNATE OBJECT -->
<object id="MySessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate12">
<property name="ExposeTransactionAwareSessionFactory" value="true" />
<property name="DbProvider" ref="DbProvider" />
...
// Remove the "WARNING Test Version" Label if not the production server (sp1...)
if (System.Configuration.ConfigurationManager.ConnectionStrings[0].ConnectionString.ToLower().Contains("sp1"))
{
WarningBox.Visible = false;
WarningLabel.Visible = false;
MainTabController.Dock = DockStyle.Fill;
}
// Remove the "WARNING Test Version" Label if not the production server (sp1...)
using (System.Xml.XmlReader appConfigReader = System.Xml.XmlReader.Create("AmericaMe.exe.config"))
{
while (appConfigReader.Read())
{
string appConfigLine = appConfigReader.Name;
if (appConfigLine.Contains("db:provider"))
{
string server = appConfigReader.GetAttribute(2);
if (server.Contains("Source=sp1-"))
{
WarningBox.Visible = false;
WarningLabel.Visible = false;
MainTabController.Dock = DockStyle.Fill;
}
break;
}
}
}
这对于ConfigurationManager
来说是不可能的,因为它只能理解在web中添加的connectionstring部分。配置文件。
您可能需要使用XmlReader
手动解析xml。