Attempt by method 'System.Web.Helpers.Json..cctor()' to access method 'System.Web.Helpers.Json.CreateSerializer()' failed

阅读时长 4 分钟读完

在使用 ASP.NET Web 应用程序进行开发时,我们可能会遇到这样的错误消息:“Attempt by method 'System.Web.Helpers.Json..cctor()' to access method 'System.Web.Helpers.Json.CreateSerializer()' failed”。这个错误消息通常是由于项目中使用了过时的 Newtonsoft.Json 库或者版本不兼容的 Newtonsoft.Json 库引起的。

什么是 Newtonsoft.Json?

Newtonsoft.Json 是一个流行的 .NET 库,可以帮助在 JSON 对象和 CLR 对象之间进行序列化和反序列化。它具有高度的灵活性和可扩展性,支持多种格式的 JSON 数据。除此之外,它也可以作为 ASP.NET Core 和 ASP.NET Web API 中默认的 JSON 序列化器使用。

问题分析

当我们尝试在项目中使用 Newtonsoft.Json 库时,可能会出现“Attempt by method 'System.Web.Helpers.Json..cctor()' to access method 'System.Web.Helpers.Json.CreateSerializer()' failed”这个错误消息。这个错误消息出现的原因是由于项目中同时引用了 Microsoft.AspNet.WebPages 和 Newtonsoft.Json 库,但是两个库的版本不兼容。

具体来说,Microsoft.AspNet.WebPages 3.2.3 版本引用了 System.Web.Helpers.Json.dll 1.0.0.0 版本的库文件,而 Newtonsoft.Json 10.0.0 版本引用了 System.Web.Helpers.Json.dll 3.0.0.0 版本的库文件。由于这两个版本的库文件存在冲突,所以就会出现以上错误消息。

解决方案

为了解决这个问题,我们需要升级 Microsoft.AspNet.WebPages 库到 3.2.4 版本或更高版本。3.2.4 版本修复了这个问题,并使用了与 Newtonsoft.Json 库兼容的 System.Web.Helpers.Json.dll 库。

具体来说,我们可以通过 NuGet 包管理器将 Microsoft.AspNet.WebPages 升级到最新版本:

然后重新生成项目并运行,应该就能够解决问题了。

示例代码

下面是一个示例代码,在这个示例中,我们使用 Newtonsoft.Json 序列化和反序列化一个 C# 对象:

-- -------------------- ---- -------
----- ----------------

------ ----- ------
-
    ------ ------ ---- - ---- ---- -
    ------ --- --- - ---- ---- -
-

------ ---- -------------------------------
-
    --- ------ - --- ------ - ---- - -------- --- - -- --

    -- - ------ ------ ---- ---
    --- ---- - ------------------------------------

    -- -- ---- -----------------------------
    ------------------------

    -- - ---- -------- ------ --
    --- ------------------ - --------------------------------------------

    -- -- ------ ------------------ ------
    --------------------------------------------------- -------------------------------
-
展开代码

结论

在使用 ASP.NET Web 应用程序开发时,我们需要谨慎处理库的版本兼容性问题。当出现“Attempt by method 'System.Web.Helpers.Json..cctor()' to access method 'System.Web.Helpers.Json.CreateSerializer()' failed”这个错误消息时,可以通过升级 Microsoft.AspNet.WebPages 库到最新版本来解决这个问题。同时,在使用 Newtonsoft.Json 序列化和反序列化 C# 对象时,需要注意库的引用以及 JSON 数据格式的正确性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/605425058d846479e750a998

纠错
反馈

纠错反馈