我有一个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中没有引用它。
感谢您的建议。
答案 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中的用法