0

我正在使用 Newtonsoft.JSON 库开发一个 .NET 2.0 C# 项目。当我检查 web.config 文件时,所有程序集都指的是 2.0 版本。

但是,当我在服务器上部署时,出现以下错误:

    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 上的那个程序集可能来自哪里?

4

3 回答 3

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\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。

注意:有一些与程序集绑定失败日志相关的性能损失。

要关闭此功能,请删除注册表值

如果不起作用,您可以根据错误信息修改注册表。

您可以按照以下步骤一一进行。

1、打开“运行”</p>

2、输入'regedit'</p>

3、备份你的注册表

4、在Registry中搜索key

5、根据错误信息修改其值

于 2012-07-16T18:23:16.567 回答
1

获取此数据的另一种方法是查看异常的详细信息……您需要确保调试器正在运行并停止异常以查看详细信息。

所有这一切似乎要么是配置问题(可能是所有细节——仔细检查所有内容,如“aspnet_regiis -lk”的输出),或者 .NET 安装已损坏(但这似乎不太可能)。

别的 ,

“'System.Web.Extensions”是应该安装在GAC中的强命名程序集,文件找不到问题应该不是子目录的相对路径问题引起的。在我看来,问题在于服务器上没有安装 AJAX 1.0 扩展。

为了解决这个问题,我们可以从“程序集”部分删除“1.0.61025.0”版本的“System.Web.Extensions”程序集。正如您所说,这样做之后,出现了 LINQ 程序集未找到问题。对于这个问题,我建议检查服务器上是否安装了 .NET Framework 3.5。

于 2012-07-16T18:17:01.437 回答
1

我怀疑您包含了错误的NewtonSoft.Json.dll库。有多个程序集——其中只有一个支持 .NET 2.0。

如果你有 Reflector/JustDecompile,你可以验证它是否有一个内部类Newtonsoft.Json.Utilities.LinqBridge——这就是它不使用System.CoreLINQ 方法的原因。

文件详细信息的描述中也包含 .NET 2.0。

于 2012-07-16T20:54:17.060 回答