我不使用Newtonsoft.Json,但我收到一个错误,说它无法找到

时间:2015-06-12 19:58:13

标签: c# json.net asp.net-web-api self-hosting

我有一个HttpSelfHostServer程序,根本不使用Newtonsoft.Json库,但是我收到以下错误:

Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.

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.SelfHost.HttpSelfHostConfiguration..ctor(Uri baseAddress)
at System.Web.Http.SelfHost.HttpSelfHostConfiguration..ctor(String baseAddress)

我的代码:

using System;
using System.Web.Http;
using System.Web.Http.SelfHost;
using System.Runtime.InteropServices;
using System.IO;

var selfHostConfiguraiton = new HttpSelfHostConfiguration("http://localhost:8080"); <- Error

selfHostConfiguraiton.Routes.MapHttpRoute(
  name: "DefaultApiRoute",
  routeTemplate: "endpoints/{controller}",
  defaults: null);

using (var server = new HttpSelfHostServer(selfHostConfiguraiton))
{
  Console.WriteLine("Server started");
  server.OpenAsync().Wait();
}

我在其他项目中使用Json.NET但不是这个。

此行发生错误

var selfHostConfiguraiton = new HttpSelfHostConfiguration("http://localhost:8080");

在app.config中没有引用它。

感谢您的建议。

2 个答案:

答案 0 :(得分:3)

谢谢你们,我找到了解决方案。将其添加到您的app.config

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>

您需要在输出目录中安装Newtonsoft.Json.dll。

编辑: 显然从Nuget安装Json.NET对于旧的WebApi自托管项目来说是一个重大改变,你需要引用Newtonsoft.Json.dll才能使用它们。

您还需要引用以下DLL: System.Net.Http.dll,System.Net.Http.Formatting.dll,System.Web.Http.dll,System.Web.Http.SelfHost.dll

度过愉快的一天:)

答案 1 :(得分:1)

JSON.NET是ASP.NET Web API不可或缺的一部分。它具有DataContractJsonSerializer不支持的许多功能,例如它可以序列化的类型以及它们应该如何序列化更灵活。您可以在下一个link

之后找到它在Web API中的用法