这几天在弄petshop的模型,为将来的大项目做准备。一个个补充问题终于攻克了。真是不容易。最后我把项目重新COPY好。当
加载完所有必要的项目的时候,发现运行的时候出现了 "BLL.MsgQQ"类型初始值设定项引发异常。 这个错误。修改BLL调试发
现是 private static readonly IMessaging.IOrder orderQueue = MessagingFactory.QueueAccess.CreateOrder(); 这句出
了问题。
明显是消息队列工厂的反射出了问题,在检查了工厂类和web.config之后都没有发现是任何的问题。工厂反射的类是对的。配
置文件反射的数据集也没有任何问题。究竟是哪里出现了问题呢?
GOOGLE之后,终于找到了是WEB站点下的Bin文件夹里必须要有MessagingFactory的DLL文件。这个引用是必须的,因为在
web.config里反射的数据集也是要从web站点的bin文件夹里获取的。因为我当初没有引用,所以BLL得不到反射的数据集。所以
就报了这样的错。下面是引用网上的观点:
<--这部分才是转载-->
按照PetShop的架构,是DALFactory程序集里通过反射创建针对特定数据访问层里的对应类实例,这样BLL调用接口时就知道调
用这个对应类实例里的实现方法。
而反射动态加载程序集是通过这种方法 Assembly.Load("程序集").CreateInstance("命名空间.类"),其中的“程序集”
读取的是Web层bin文件夹下对应的 dll,即反射加载的程序集dll在Web层的bin文件夹必须有,不然就会出现如题的错误。问题
解决了~^_^
出现这种错误的另两种情况,这也是在网上看到的,一起写下来。
一、Web.config配置错误。
在DALFactory程序集里的DataAccess类里,通过
private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];
来获得程序集的名称的。
在Web.config里我的配置如下:
<appSettings>
<add key="WebDAL" value="PDMS.SQLServerDAL"/>
</appSettings>
二、程序集名称和默认命名空间错误。
在各个程序集右键--属性,看看程序集名称和默认命名空间有没有写错。这个问题也可能导致如题的错误~~
<--这部分才是转载-->
最近一直在学习。感觉最近学习的气氛有上来了,很好。继续加油!希望以后的我再次看到这篇文的时候能想起现在的学习。