2014-10-28 68 views
0

我們公司最近發生了一些認證更改,我們應該更改所有應用程序中的認證系統。我們有一個dll(Auth.dll),它具有關於認證的邏輯。我們所有的應用程序都有這些Auth.dll文件,並使用相同的邏輯進行身份驗證。無法加載文件或程序集asp.net

我們的策略是修改dll以使用新的身份驗證邏輯。方法簽名保持不變,因爲這些方法是我們在所有應用程序中從其他地方調用的方法。

我們在我們公司有一個檔案應用程序(建立在.Net framework 2.0上),一些用戶仍然使用。這些檔案應用程序的問題是我們沒有源代碼。所以我只是試圖創建一個新的dll,並將其替換到舊dll託管位置上的生產服務器上。其他一切都保持不變。

我使用框架2.0創建了新的dll。我有單元測試過,工作正常。 我得到的問題是 -

Could not load file or assembly 'Auth, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ae1958e6e8b32d9c' or one of its dependencies. The system cannot find the file specified. 

我檢查了新Auth.dll公鑰標記,它看起來OK。該版本也看起來不錯。 Auth dll只提供了4個.Net Framework 2.0程序集。

任何想法可能是錯誤的?

感謝

+0

感謝您的建議傢伙。我在所有程序集上使用了ILSpy,並將Auth.dll的引用與新的dll進行了比較。所有的參考簽名看起來都不錯。任何其他建議? – user979189 2014-10-28 16:36:55

+0

你可以嘗試類似filemon的東西來查看它在加載期間嘗試訪問的文件,但這是一個過程。還有一種琥珀魚,我從來沒有用過,但它可能有幫助。 – punkcoder 2014-10-28 19:04:00

回答

1

你可以很容易地通過使用類似http://ilspy.net/得到該DLL的源代碼,這會接着讓你得到源代碼並重新編譯。我一直很難追蹤這些類型的問題,但是如果你使用ILSPY,你應該能夠看到Auth.dll引用的所有DLL。

作爲絕對最後的手段,您可以使用sysinternals中的一些工具來查看在加載該硬盤時正在訪問的內容,以查看引用dll是否不存在。希望這可以幫助。

0

您是否在gac中註冊了auth.dll,或者將它放入了存檔應用程序的bin文件夾中?

此外,如果存檔應用程序引用舊的auth.dll,那麼新的簽名將需要與舊的簽名完全匹配,並且我的意思是它是完全限定類型的名稱。

例如

Auth, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ae1958e6e8b32d9c 

現在需要和以前一樣。

或者您必須像建議的punkcoder那樣做,並使用ILSpy重建源代碼或使用ILDASM並更改引用和ILASM以重新組合。

0

您是否在C:\Windows\assembly中搜索並找到程序集? 案例號,您必須安裝或獲取相同版本的組件。

相關問題