gpt4 book ai didi

C#读取Spring框架连接字符串

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:11 25 4
gpt4 key购买 nike

这里的许多其他问题都集中在 System.Configuration.ConfigurationManager... 的使用上 对于我的问题,我需要从 Spring 对象中提取连接字符串以确定连接到的服务器并删除使用该应用程序测试版本的任何横幅/警告。这个想法是如果应用程序连接到“sp1-...”,则该应用程序是生产版本。

如何读取嵌套在 App.config xml 上下文中的对象?请注意,它存在于 Hibernate 对象之外,因此(在我看来)必须存储在 Spring 库变量中。

下面是我的应用程序 App.config 的一部分。

...
<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" />
...

如果给定正常的 App.config 设置,这是我执行此操作的方式:

// 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;
}

编辑 似乎 XMLReader 方向是唯一的出路。在我看来有点野蛮,但这是我实现的有效代码:

// 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.config 文件中的连接字符串部分。

您可能需要使用 XmlReader 手动解析 xml。

有关解析 xml 的详细信息,请参阅 link .

关于C#读取Spring框架连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32913207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com