C# DAL.SQLHelper的类型初始值设定项引发异常
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的类型初始值设定项引发异常,谁遇到过解决的
------解决方案--------------------<connectionStrings>
<add name="ConnectionString" connectionString="Server=.;Database=Sample;Uid=sa;Pwd=123;Max Pool Size=512;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
------解决方案--------------------其中数据源改成Data Source=.
------解决方案--------------------Data Source=SQL2008R2 改成 Data Source=
.SQL2008R2 试试
------解决方案--------------------可能你的“类型初始值设定项”不仅仅是这个给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调试器能够准确地给你显示异常堆栈位置为止。
lz的代码 System.Configuration.ConfigurationManager.ConnectionStrings["strCon"] 根本用不到 providerName。
vs的调试期有点悲催,对于“类型初始设定项异常”根本没有更详细的异常信息抛出,而且也无法进入原代码去调试。