gpt4 book ai didi

c# - 如何强制 WebAPI 使用 JSON.net 6.0.3 而不是 4.5?

转载 作者:可可西里 更新时间:2023-11-01 07:55:42 25 4
gpt4 key购买 nike

添加WebAPI并在Global.asax中注册后。

我们发现我们的网络应用程序在这一行中断:

Line 17:             GlobalConfiguration.Configure(WebApiConfig.Register);

错误信息:

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.

经过一些检查,我发现我们在这个 MVC 5.1 应用程序中使用了 Json.net 6。这是否意味着我们必须降级到 Json.net 4.5 才能使 WebAPI 正常工作?


在我的.csproj 文件中,只有一个条目:

<Reference Include="Newtonsoft.Json, Version=6.0.3.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>False</Private>
</Reference>

当我在 Manage NuGet Packages 中查看我的 Json.NET 时,它还说我的 Json.NET 是版本 6.0.3。

另外,在我的web.config中已经有了bindingRedirect语句。

  <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>

但是,如果我查看 Visual Studio 中 Web 项目的 referencesNewtonsoft.Json 的路径指向 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Blend\Newtonsoft.Json.dllCopy Local 为假。

怎么可能呢?我们如何处理这种冲突?

最佳答案

您需要在 web.config 中添加绑定(bind)重定向(可能与您现有的绑定(bind)重定向合并):

<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>
</runtime>

关于c# - 如何强制 WebAPI 使用 JSON.net 6.0.3 而不是 4.5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23893117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com