webservice 引用web.config链接字符串异常
来源:互联网 发布:爵府四大标尺源码 编辑:程序博客网 时间:2024/06/16 12:27
类型初始值设定项引发异常
遇到了这个问题,这篇博文说得透彻。根据它,我发现是一个静态变量初始化时出错了,原因是程序使用了旧的配置文件,导致数据错误。
特此转发。
原文地址:http://hi.baidu.com/charmingpeace/blog/item/2263d9bdb970570318d81f5d.html
-上午打开VS编译程序的时候,突然出现了这个运行时错误“类型初始值设定项引发异常”。昨天还没有这个错误呢,今天就突然出现,搞得我一头雾水。上网搜了一下,发现有很多人遇到了这个问题。经过一番折腾解决了这个问题后,发现很多人都没有意识到其症结所在,于是写这个随笔,给大家点启发,也给自己做个备忘。
症状描述:
我的程序需要连接一台MQ服务器(其实就是个台式机,每天下班关机),如果服务器没有开,程序就会抛出异常。以前编译时老是忘开服务器,经常会出现MQ访问失败的异常。这次我原本以为也是这个异常,没想到出来的是“类型初始值设定项引发异常”。
今天的错误为什么会和以往不一样呢?昨天临下班时,把一个类的单件模式做了重构,使用了静态初始化方法。代码如下:
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
访问MQ的语句在Initialize方法里,问题就应该出现在这里了。
解决方法:
当然,把MQ服务器打开问题就解决了,但是究竟为什么会出现“类型初始值设定项引发异常”呢?
原来类的静态成员在初始化时如果出现异常,访问类的其它静态成员或对该类进行初始化都会抛出这个异常。请看下面的代码:
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![【转】类型初始值设定项引发异常 【转】类型初始值设定项引发异常](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
在访问Test.Test2以及new Test()时都会抛出这个异常。我的代码中,由于Initialize()出现异常,instance实例化失败,所以访问Instance时就抛出了这个异常。
总结:
TypeInitializationExeption在MSND中的描述为:当类初始值设定项不能初始化类型时,将创建 TypeInitializationException 并向其传递由该类型的类初始值设定项引发的异常引用。
我们知道,类型初始化或者访问类型的静态成员时,都会对类中的其他静态成员进行初始化,并执行静态构造函数(如果有的话)。在这些过程中如果任一环节出现例如下面的代码:
class ClassHelper
{
public static string Field = Do("Initial the static field");
public static string StaticString = "Initaial static string";
public string NonStaticString = "Initial non static string";
public ClassHelper()
{
NonStaticString = "Change non static string in instance constructor";
StaticString = "Change static string in instance constructor";
}
public static string Do(string field)
{
Console.WriteLine(field);
throw new Exception();
return field;
}
}
那么产生TypeInitializationException的情况就包含以下几种:
1. 访问类的某一静态成员,而其他静态成员的初始化(或静态构造函数中)产生异常。例如访问ClassHelper.StaticString,由于静态成员Field的初始化产生异常,因此调用ClassHelper.StaticString会抛出TypeInitializationException。
2. 访问类的某一静态成员,该静态成员的初始化(或静态构造函数中)产生异常。例如访问ClassHelper.Field。
3. 对该类进行初始化,而类中的某个静态成员初始化(或静态构造函数中)产生异常。例如ClassHelper helper = new ClassHelper()。
- webservice 引用web.config链接字符串异常
- webservice 引用web.config链接字符串异常
- WebService如何从Web.Config中读取数据库连接字符串
- C# 获取web.config配置文件的链接字符串
- 将数据库的链接字符串分离到web.config之外的的database.config文件中
- web.config 连接字符串
- Web.config数据库连接字符串
- Web.config:OracleClient链接配置
- asp.net 2.0 中引用Web.config内的连接字符串的方法
- c#里把数据库链接字符串写在web.config文件里调用方法
- HyperLink链接动态传参数(Web.Config中设置绑定样式:格式字符串)
- VS2010 webservice 添加web引用
- c#web.config里配置webservice调用
- 取Web.config连接字符串
- 加密web.config连接字符串
- WEB.CONFIG中数据库连接字符串
- web.config 数据库连接字符串详解
- web.config中的连接字符串
- scanf函数细节
- 页面跳转
- struts1.x的重复提交问题
- 硬盘安装了 Fedora 14 x86_64 [快速配置]
- 约瑟夫问题(单向链表)
- webservice 引用web.config链接字符串异常
- webservice 引用web.config链接字符串异常
- 隔夜茶为什么不能喝?
- jsp伪静态
- strcmp的原型及其定义
- erlang基础语法学习笔记(一)
- 字符串和二进制字符串问题以及读写二进制文件
- 从Asp.net导出excel时防止连页面一起导出
- android listview的创建及行删除操作