C# DAL.SQLHelper的类型初始值设定项引发异常

零-点 2013-01-13 03:30:52
C#配置文件
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add connectionString="strCon" name="Data Source=SQL2008R2;Initial Catalog=HotelWebDB;User ID=sa;Password=mima"/>
</connectionStrings>
</configuration>

读取配置文件代码
  private static string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["strCon"].ToString();

运行就报DAL.SQLHelper的类型初始值设定项引发异常,谁遇到过解决的
...全文
10973 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
桃桃2015 2015-03-13
  • 打赏
  • 举报
回复
app.config位置有关系,你放在你该放的地方
Victor-Star 2014-10-16
  • 打赏
  • 举报
回复
C# CODE SqlParameter[]的参数
恋喵大鲤鱼 2014-05-26
  • 打赏
  • 举报
回复
请问有人解决了吗?还是解决不了啊!请大神指导!
hansi258865 2013-11-28
  • 打赏
  • 举报
回复
写反了。哈哈。还找错呢。
a423344467 2013-09-23
  • 打赏
  • 举报
回复
解决了没有啊,其实还是你的配置文件写的有错误,应该不是你自己写的吧! 你看看你配置文件中的<add name属性>,是这里错误了
zhulioffice 2013-08-17
  • 打赏
  • 举报
回复
不从配置文件中获取连接字符串,直接写在程序里一般就可以,但性能牺牲了
天涯酱油 2013-05-26
  • 打赏
  • 举报
回复
请问楼主解决了吗··我也遇到这样的问题·
david_88888 2013-04-24
  • 打赏
  • 举报
回复
遇到同样的问题
「已注销」 2013-01-13
  • 打赏
  • 举报
回复
Data Source=SQL2008R2 改成 Data Source=.SQL2008R2 试试
dalmeeme 2013-01-13
  • 打赏
  • 举报
回复
其中数据源改成Data Source=.
ifcontinue 2013-01-13
  • 打赏
  • 举报
回复
最好能把异常原始信息贴出来,lz 这样描述不好确定问题在哪里
njw1028 2013-01-13
  • 打赏
  • 举报
回复
<connectionStrings> <add name="ConnectionString" connectionString="Server=.;Database=Sample;Uid=sa;Pwd=123;Max Pool Size=512;" providerName="System.Data.SqlClient"/> </connectionStrings>
零-点 2013-01-13
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
可能你的“类型初始值设定项”不仅仅是这个给ConnectionString变量赋值的代码,还有别的。 看看你有没有其它的static变量声明中赋值的代码,以及有没有C# code?1234static SQLHelper(){....} 代码。 vs调试器无法调试(以及根本无法正确给你报告)“类型初始值设定”代码中的异常位置信息。因此你可以尽量避免“类型初始……
测试直接给ConnectionString赋连接字符串不会出错,读取app.config就会抛出异常
  • 打赏
  • 举报
回复
可能你的“类型初始值设定项”不仅仅是这个给ConnectionString变量赋值的代码,还有别的。 看看你有没有其它的static变量声明中赋值的代码,以及有没有
static SQLHelper()
{
....
}
代码。 vs调试器无法调试(以及根本无法正确给你报告)“类型初始值设定”代码中的异常位置信息。因此你可以尽量避免“类型初始值设定”。例如写:
private static string _ConnectionString = null;

private static string ConnectionString
{
    get{
          if( _ConnectionString==null)
                 _ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["strCon"];
          return _ConnectionString;
    }
}
这样,vs就能给你详尽的地报告异常错误位置和堆栈,并且支持调试。因为这个赋值语句不再是“类型初始值设定”中运行的代码了! 当然你的这个赋值语句看起来不像是有问题,有问题的地方你可能根本没贴出来。 根据这个原理,逐一地自己修改其它“类型初始值设定项”代码并且立刻调试运行,直到运行时vs调试器能够准确地给你显示异常堆栈位置为止。
引用 1 楼 njw1028 的回复:
<connectionStrings> <add name="ConnectionString" connectionString="Server=.;Database=Sample;Uid=sa;Pwd=123;Max Pool Size=512;" providerName="System.Data.SqlClient"/> </connectionS……
lz的代码 System.Configuration.ConfigurationManager.ConnectionStrings["strCon"] 根本用不到 providerName。
引用 2 楼 ifcontinue 的回复:
最好能把异常原始信息贴出来,lz 这样描述不好确定问题在哪里
vs的调试期有点悲催,对于“类型初始设定项异常”根本没有更详细的异常信息抛出,而且也无法进入原代码去调试。

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧