我有一个根本不使用Newtonsoft.Json库的HttpSelfHostServer程序,但我收到以下错误:
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 中没有引用它。
感谢您的建议。
谢谢你们,我找到了解决方案。将此添加到您的应用程序.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
祝你有美好的一天:)
JSON.NET 是 ASP.NET Web API不可或缺的一部分。 它具有DataContractJsonSerializer不支持的许多功能,例如在可以序列化的类型以及应该如何序列化它们方面更加灵活。您可以在下一个链接中找到它在 Web API 中的使用方式