执行异步方法时无法加载文件或程序集 'Newtonsoft.Json' 错误

Could not load file or assembly 'Newtonsoft.Json' error when an async method is executed

在我的 mvc 应用程序中,我在单击按钮时调用一种异步方法,这会将设备注册到物联网集线器中。

该代码在控制台应用程序中运行良好,但在 mvc 应用程序中出现问题。

错误:

The type initializer for 'Microsoft.Azure.Devices.HttpClientHelper' threw an exception.

内部异常:

Could not load file or assembly 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Newtonsoft.Json 包已安装到项目 10.0.3 版本中 代码

  public async Task<ActionResult> AddDeviceAsync()
    {         
        Device device;
        try
        {
            connectionString = ConfigurationManager.AppSettings["DefaultIoTHubConnection"];          

            registryManager = RegistryManager.CreateFromConnectionString(connectionString);

            List<string> collection = new List<string>();
            for (int i = 0; i < 4; i++)
            {
                collection.Add("dummy_device_" + i);
            }

            foreach (var deviceId in collection)
            {
                try
                {
                    // register device into IoT hub 
                    device = await registryManager.AddDeviceAsync(new Device(deviceId)); // getting exception here

当 CLR 执行编译后的代码并且无法在应用程序域中找到程序集时,就会出现此问题。

这里的想法是,您正在执行的代码是通过引用 Newtonsoft.Json 的 6.0.0.0 版编译的,但在运行时,您在引用的程序集不可用的应用程序域中执行该代码(或者程序集的引用版本不可用)。

您的 asp.net mvc 项目是否引用了 Newtonsoft.Json nuget 包?你引用的是什么版本的包?