我正在尝试实现一个使用 .net core 3(预览版 9)作为目标框架并使用新的 System.text.json 命名空间的函数。这是我的代码:
using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using System.Text.Json;
namespace Backtester
{
public class Test
{
public string Author { get; set; }
public string Currency { get; set; }
}
public static class Function
{
[FunctionName("Function")]
public static void Run([ServiceBusTrigger("%QueueName%", Connection = "AzureWebJobsServiceBus")]string myQueueItem, ILogger log)
{
try
{
var request = JsonSerializer.Deserialize<Test>(myQueueItem);
log.LogInformation($"Currency: {request.Currency} - {request.Author}");
}
catch (Exception ex)
{
throw;
}
}
}
}
当我运行代码并将消息提交到服务总线队列时,该函数被触发但失败并出现以下错误:
[13/09/2019 13:01:25] System.Private.CoreLib: Exception while executing function: Function. Backtester: Could not load file or assembly 'System.Text.Json, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058). Cannot load a reference assembly for execution.
[13/09/2019 13:01:25] MessageReceiver error (Action=UserCallback, ClientId=MessageReceiver1********************, EntityPath=**********, Endpoint=**********************************)
[13/09/2019 13:01:25] System.Private.CoreLib: Exception while executing function: Function. Backtester: Could not load file or assembly 'System.Text.Json, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058). Cannot load a reference assembly for execution.
我得出的结论是,我将不得不将我的项目降级到 .net core 2.2,这将导致相当多的工作,因为我有一个使用新代码库启动并运行的 Web 项目。