执行异步方法时无法加载文件或程序集 '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 包?你引用的是什么版本的包?
在我的 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 包?你引用的是什么版本的包?