2012-03-23 43 views
0

我一直在爲我正在開發的項目實施RSA安全性。當附加到IIS7進程時,WcfSvcHost拋出LoaderException,但似乎一切正常?

  • 我正在使用網上找到的SecurID4Net文件來獲得這個滾動,默認情況下它是針對.Net 2.0框架,任何CPU。
  • 我創建了一個派生的SqlMembershipProvider,它引用了SecurID4Net.Interfaces項目,目標是.Net 4.0,任何CPU。
  • 我的課程庫「服務」引用SqlMembershipProvider,也針對任何CPU。
  • 我的web應用程序「Services.Web」引用了「Services」lib,.Net 4.0,任何CPU。

我沒有使用客戶端配置文件進行任何程序集定位.Net 4.我在這裏描述的每個參考都將Copy Local設置爲True。

我有我的本地IIS默認網站設置爲我的Web項目的輸出文件夾,所以我可以按Ctrl-Shift-B並瀏覽我的IIS文件夾。當我的客戶端應用程序第一次登錄(可能是2到3次)時,它可以正常工作,但在此之後登錄失敗。另外,附着在IIS7過程(Services.Web)的時候,我會得到以下錯誤:

System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information. 
    at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module) 
    at System.Reflection.Assembly.GetTypes() 
    at Microsoft.Tools.SvcHost.ServiceHostHelper.LoadServiceAssembly(String svcAssemblyPath) 

它有問題加載DLL是我創建的SqlMembershipProvider。

因此,我將SecurID4Net.Interfaces項目更改爲目標.Net 4.0,並重新編譯。它似乎現在一直工作(仍在測試這部分),但CTRL-ALT-P連接到IIS進程仍然導致WcfSvcHost錯誤彈出,然後我才能真正連接到進程...其他一切似乎都在工作。

  • 我以管理員身份運行我的VS,所以我可以附加到IIS進程;
  • 所有描述的參考都設置爲Copy Local = true;
  • 所有程序集都針對.Net 4.0完整資料;
  • 所有程序集都可到達,而不會被託管該服務器的服務器的複製操作阻止;
  • 據我所知web.config沒有語法問題。

任何人有任何想法,爲什麼這個錯誤不斷彈出?爲什麼會出現這個錯誤,當一切似乎工作?

回答

0

我想我幾乎立即找到了答案。在項目鏈檢查每個AssemblyInfo.cs文件後,我發現這在我的SqlMembershipProvider裝配:

[assembly: AssemblyCulture("EN-us")] 

我刪除了值,因此它是一個空字符串。

我在幾個月前的另一個項目中發現了一個非常類似的問題,在這個項目中,網站已經填充了這個網站,並且網站負責第一次加載,但是之後每次加載失敗時都會出現一個非常神祕的錯誤在深入研究之後,發現它無法加載程序集,導致FileNotFoundException。

我不知道爲什麼這個微小的,簡單的屬性會導致如此多的頭痛......

編輯:我99%肯定這是它。當我連接到我的IIS進程時,我不再收到WcfSvcHost錯誤。

相關問題