【问题标题】:C#, Winform, Sql Server and Config fileC#、Winform、Sql Server 和配置文件
【发布时间】: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


【解决方案1】:

配置文件应命名为<exename>.exe.config,例如如果你的exe名称是xyz.exe,那么它的配置文件名应该是xyz.exe.config

如果要使用非标准名称,则必须手动读取配置文件。

【讨论】:

  • 我确实手动阅读了配置文件。看来你误解了问题
  • 我尝试了一个从 SQL Server 读取的简单应用程序,我根本不需要任何配置文件。有些东西让你的代码使用SqlConnectionFactory,这不是必需的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 2017-03-06
  • 2011-05-04
相关资源
最近更新 更多