【发布时间】:2013-11-18 08:57:49
【问题描述】:
我有一个名为 xyz.exe 的 C# winform 应用程序。它使用 xyz.config 文件运行。配置文件是一个纯文本文件,我在其中放置了运行应用程序所需的设置,例如它必须迭代多少次、要读取哪些文件、默认值是什么等。它工作得很好。一切正常。今天我开始处理一些增强请求,我需要连接到 sql server 数据库并检索一些信息。非常直截了当。
如果我运行调试 (F5) 一切正常。但是,如果我通过键入 xyz.exe 从命令提示符运行它,它会抛出异常 "The type initializer for 'System.Data.SqlClient.SqlConnectionFactory' throw an exception." 它指向连接部分。如果我将 xyz.config 重命名为其他名称,异常就消失了。如果我创建一个空白的 App.config(这将生成 xyz.exe.config),异常就消失了。
发生了什么事?谁能向我解释一下,可能的解决方案、选项、最佳解决方案是什么?有可能使应用程序不寻找 xyz.config 和 xyz.exe.config w/o 抛出异常。在我介绍与 db 的连接之前没关系。
SqlConnection connection = new SqlConnection(
"user id=xx;" +
"password=xx;" +
"server=xx;" +
"database=xx; " +
"connection timeout=xx");
try
{
connection.Open();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
try
{
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("select * from xx",
connection);
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
Console.WriteLine(myReader["xx"].ToString());
Console.WriteLine(myReader["xx"].ToString());
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
connection.Close();
【问题讨论】:
-
你的配置文件应该叫做 xyz.exe.config。它在您在命令行中运行的文件夹中是否像这样命名?
-
我的配置文件是 xyz.config。如果我创建了一个空配置文件(添加、新项目、App.config),我将拥有 xyz.exe.config
-
配置文件应该命名为
.exe.config -
如果我没有 sql 连接,似乎不会强制执行配置文件名(因此我可以使用 xyz.config)。是否可以覆盖此强制执行?还是关掉?
-
为什么不能有默认名称?你有什么限制吗?
标签: c# sql-server winforms app-config