2012-07-16 43 views
0

我正在使用Newtonsoft.JSON庫的.NET 2.0 C#項目。當我檢查web.config文件時,所有程序集都引用2.0版本。NET 3.5意外的錯誤,幷包括

然而,當我部署服務器,我收到以下錯誤的:

Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IO.FileNotFoundException: Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified. 

Source Error: 


Line 21:  } 
Line 22: 
Line 23:  Dictionary<string, string> config = JavaScriptConvert.DeserializeObject<Dictionary<string, string>>(jason); 
Line 24: 
Line 25:  if (Request.Form["login"] == config["adminLogin"] && FormsAuthentication.HashPasswordForStoringInConfigFile(Request.Form["password"], "sha1") == config["adminPass"]) 


Source File: c:\Website\WSRecrut\Test\ConnectionPost.aspx Line: 23 

Assembly Load Trace: The following information can be helpful to determine why the assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' could not be loaded. 


WRN: Assembly binding logging is turned OFF. 
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. 
Note: There is some performance penalty associated with assembly bind failure logging. 
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. 


Stack Trace: 


[FileNotFoundException: Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.] 
    Newtonsoft.Json.Utilities.CollectionUtils.CreateDictionaryWrapper(Object dictionary) in D:\Newtonsoft\Projects\Json\trunk\Src\Newtonsoft.Json\Utilities\CollectionUtils.cs:422 
    Newtonsoft.Json.JsonSerializer.CreateObject(JsonReader reader, Type objectType, Object existingValue) in D:\Newtonsoft\Projects\Json\trunk\Src\Newtonsoft.Json\JsonSerializer.cs:223 
    Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType) in D:\Newtonsoft\Projects\Json\trunk\Src\Newtonsoft.Json\JsonSerializer.cs:169 
    Newtonsoft.Json.JavaScriptConvert.DeserializeObject(String value, Type type, JsonConverter[] converters) in D:\Newtonsoft\Projects\Json\trunk\Src\Newtonsoft.Json\JavaScriptConvert.cs:512 
    Newtonsoft.Json.JavaScriptConvert.DeserializeObject(String value, JsonConverter[] converters) in D:\Newtonsoft\Projects\Json\trunk\Src\Newtonsoft.Json\JavaScriptConvert.cs:485 
    Newtonsoft.Json.JavaScriptConvert.DeserializeObject(String value) in D:\Newtonsoft\Projects\Json\trunk\Src\Newtonsoft.Json\JavaScriptConvert.cs:457 
    ASP.connectionpost_aspx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in c:\Website\WSRecrut\Test\ConnectionPost.aspx:23 
    System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +2113547 
    System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +24 
    System.Web.UI.Page.Render(HtmlTextWriter writer) +26 
    System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +25 
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +121 
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +22 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1896 

沒有任何人有一個想法? 3.5上的組件可以從哪裏來?

回答

1

我懷疑你包含錯誤的NewtonSoft.Json.dll庫。有多個程序集 - 其中只有一個支持.NET 2.0。

如果你有Reflector/JustDecompile,你可以驗證它是否有一個內部類Newtonsoft.Json.Utilities.LinqBridge - 這就是它允許它不使用LINQ方法System.Core

該文件的詳細說明中也有.NET 2.0。

+0

馬克,我使用正確的.NET 2.0牛頓軟件庫。當使用Visual Studio 2008編譯.NET 2.0時,不會顯示錯誤。 – 2012-07-17 06:00:53

+0

其實Newtonsoft圖書館是舊的,當我切換到最新的2.0 comptabile都工作正常。謝謝。 – 2012-07-17 12:48:10

1

獲取此數據的另一個途徑是查看異常的詳細信息......您需要確保調試程序正在運行並停止處理異常以查看詳細信息。

所有這些似乎或者是一個配置問題(這可能是所有關於細節的問題 - 再次檢查所有內容,如來自「aspnet_regiis -lk」的輸出),或者.NET安裝已損壞(但看起來好像很少可能)。

否則,

的「'System.Web.Extensions程序」是強命名大會,應安裝在GAC中,文件中未發現問題不應由子目錄的相對路徑問題引起的。在我看來,問題是AJAX 1.0擴展沒有安裝在服務器上。

要解決此問題,我們可以從「程序集」部分刪除「1.0.61025.0」版本的「System.Web.Extensions」程序集。正如你所說,這樣做後,出現LINQ程序集未找到問題。對於這個問題,我建議檢查服務器上是否安裝了.NET Framework 3.5。

+0

我不使用Ajax,但無論如何感謝。我將刪除所有要測試的程序集。 – 2012-07-16 19:17:27

+2

總是歡迎... – Abhijeetchindhe 2012-07-16 19:18:32

2

1,分析器錯誤消息:無法加載文件或程序集「System.Core,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089」或其某個依賴項。該系統找不到指定的文件。

我建議您投資是否將.NET Framework 3.5安裝在您的目標機器上。您可以下載驗證工具來驗證目標計算機上的.NET Framework狀態。你可以點擊下面的鏈接。

http://blogs.msdn.com/b/astebner/archive/2008/10/13/8999004.aspx

2,WRN:集綁定日誌記錄被關閉。

要啓用程序集綁定失敗日誌記錄,註冊表值[HKLM \軟件\微軟\融合EnableLog!](DWORD)設置爲1

注:有一些與程序集綁定失敗日誌記錄關聯的性能損失。

要關閉此功能,請移除註冊表值

如果它不工作,你可以修改的錯誤信息的基礎上的註冊表。

您可以按照以下步驟一個接一個。

1,打開 '運行'

2,鍵入 'regedit'

3,備份註冊表

4,搜索註冊表

5鍵,修改它的值錯誤信息的基礎

+0

謝謝,我知道.NET 3.5沒有安裝在目標服務器上。這就是爲什麼我寫了一個.NET 2.0項目。 – 2012-07-16 18:31:24