【问题标题】:Method not found 'Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(Boolean)找不到方法'无效 Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(Boolean)
【发布时间】:2013-05-26 04:52:17
【问题描述】:

我下载了 webapi 的示例代码,我得到了这个异常 我使用 Visual Studio 2012 Ultimate Version 打开了这个示例,我安装了最新版本的 newtonsoft。我在运行这个应用程序时收到了这个错误。它编译成功。 知道为什么会出现这个错误,有没有办法解决这个异常。

System.MissingMethodException was unhandled by user code
  HResult=-2146233069
  Message=Method not found: 'Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(Boolean)'.
  Source=System.Net.Http.Formatting
  StackTrace:
       at System.Net.Http.Formatting.JsonContractResolver..ctor(MediaTypeFormatter formatter)
       at System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor()
       at System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters()
       at System.Net.Http.Formatting.MediaTypeFormatterCollection..ctor()
       at System.Web.Http.HttpConfiguration.DefaultFormatters()
       at System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection routes)
       at System.Web.Http.GlobalConfiguration.<.cctor>b__0()
       at System.Lazy`1.CreateValue()
       at System.Lazy`1.LazyInitValue()
       at System.Lazy`1.get_Value()
       at System.Web.Http.GlobalConfiguration.get_Configuration()
       at System.Web.Http.RouteCollectionExtensions.MapHttpRoute(RouteCollection routes, String name, String routeTemplate, Object defaults, Object constraints, HttpMessageHandler handler)
       at System.Web.Http.RouteCollectionExtensions.MapHttpRoute(RouteCollection routes, String name, String routeTemplate, Object defaults)
       at WebAPIRc.RouteConfig.RegisterRoutes(RouteCollection routes) in c:\Users\viemon\Downloads\WebAPIRc\WebAPIRc\WebAPIRc\App_Start\RouteConfig.cs:line 17
       at WebAPIRc.WebApiApplication.Application_Start() in c:\Users\viemon\Downloads\WebAPIRc\WebAPIRc\WebAPIRc\Global.asax.cs:line 36
  InnerException: 

这是失败的代码

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
          //Exception error start
            routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
          //exception error end

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }

我知道我需要为 NuGet from this post 开启“包含预发布”, 但是如何开启如何开启 NuGet 的“Include Prerelease”呢?

【问题讨论】:

    标签: c# visual-studio-2012 json.net


    【解决方案1】:

    如何开启如何开启 NuGet 的“包括预发布”?

    要使用 "Include Prerelease" 安装 Json.NET,请在 the Package Manager Console

    中运行以下命令
    Install-Package Newtonsoft.Json –IncludePrerelease
    

    【讨论】:

      【解决方案2】:

      另一个原因可能是您的 GAC 中有旧版本。对我来说,该版本位于 .NET 4.0 GAC 中,删除此问题解决了问题

      【讨论】:

      【解决方案3】:

      在我的情况下,我只是删除了 RouteConfig 中的以下行(它已经被删除了)。

        //Exception error start
          routes.MapHttpRoute(
              name: "DefaultApi",
              routeTemplate: "api/{controller}/{id}",
              defaults: new { id = RouteParameter.Optional }
          );
        //exception error end
      

      在 VS2012 中,这应该足够了。

              routes.MapRoute(
                  name: "Default",
                  url: "{controller}/{action}/{id}",
                  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
              );
      

      您可能还需要验证您的控制器。 如果您不确定它们的用途,还要删除 RouteConfig 中的一些类引用。在我的情况下,我只保留这两个:

      using System.Web.Mvc;
      using System.Web.Routing;
      

      另一个解决方案是,如果您想要并且有时间找出导致冲突的原因,那么您可以将您的项目构建输出详细程度设置为详细 (Go to Tools-&gt; Options -&gt; Project and Solutions -&gt; Build and Run -&gt; MSBuild project build output verbosity) and upon build check your logs.

      【讨论】:

      • 接受的答案对我不起作用,但从 RouteConfig 中删除它确实有效。但是您是否有任何文件表明删除它不会导致任何问题?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      相关资源
      最近更新 更多