ASP.NET 型別初始值設定項引發異常
阿新 • • 發佈:2019-02-03
連續兩天都為這個執行時錯誤“型別初始值設定項引發異常”而煩惱,除錯也不知道哪裡出了問題。上網Google一下,一大堆相同的問題,可是按照那些方法折騰來折騰去,問題還是一樣。最後在CSDN上發帖子問了,果然“重賞之下必有勇夫”,很快就有高手回覆了,問題也隨著解決了。哈哈。在此寫個隨筆,以後如果大家遇到類似問題,也可參考一下,自己也做個備忘,不然放在電腦上,又找不到,我的電腦檔案到處亂放,有時連我自己都找不到^_^。
問題是這樣嘀:
專案採用了三層架構和工廠模式,並借鑑了PetShop的架構,因為這個專案也是採用分散式的資料庫,目前只有三個資料庫,主要出於提高訪問效能考慮。
原來是按照網上對PetShop的介紹來給各專案新增引用的。
1、Web 引用 BLL。
2、BLL 引用 IDAL,Model,使用DALFactory建立例項。
3、IDAL 引用 Model。
4、Model 無引用。
5、DALFactory 引用IDAL,通過讀取web.config裡設定的程式集,載入類的例項,返回給BLL使用。
6、SQLServerDAL 引用 Model和IDAL,被DALFactory載入的程式集,實現接口裡的方法。
問題就出在這裡了。頂!
按照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>
二、程式集名稱和預設名稱空間錯誤。
在各個程式集右鍵--屬性
問題是這樣嘀:
專案採用了三層架構和工廠模式,並借鑑了PetShop的架構,因為這個專案也是採用分散式的資料庫,目前只有三個資料庫,主要出於提高訪問效能考慮。
原來是按照網上對PetShop的介紹來給各專案新增引用的。
1、Web 引用 BLL。
2、BLL 引用 IDAL,Model,使用DALFactory建立例項。
3、IDAL 引用 Model。
4、Model 無引用。
5、DALFactory 引用IDAL,通過讀取web.config裡設定的程式集,載入類的例項,返回給BLL使用。
6、SQLServerDAL 引用 Model和IDAL,被DALFactory載入的程式集,實現接口裡的方法。
問題就出在這裡了。頂!
按照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>
二、程式集名稱和預設名稱空間錯誤。
在各個程式集右鍵--屬性