问题描述
我创建了带有 Http 触发器的 Azure Function App,因为我想使用 system.runtime 命名空间中的内存缓存来缓存令牌。但是当我运行应用程序时,它会抛出错误 " System.Runtime.Caching: Could not load file or assembly 'System.Configuration.ConfigurationManager,Version=5.0.0.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified."
我已确保在项目中安装了确切的版本。这是 csproj 文件。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsversion>v3</AzureFunctionsversion>
</PropertyGroup>
<ItemGroup>
<packagereference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
<packagereference Include="System.Configuration.ConfigurationManager" Version="5.0.0" />
<packagereference Include="System.Runtime.Caching" Version="5.0.0" />
</ItemGroup>
<ItemGroup>
这是我遇到问题的代码的最低版本。
public static class Function1
{
public static MemoryCache accesstokenCache = new MemoryCache("accesstoken");
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function,"get","post",Route = null)] HttpRequest req,ILogger log)
{
accesstokenCache.Add("123","123",new CacheItemPolicy() { Priority = CacheItemPriority.Default });
return new OkObjectResult("");
}
}
解决方法
以上代码适用于 system.runtime.caching nuget 版本 4.7.0。我现在已经降级以使其正常工作。
我也在github上发布了这个问题以供进一步跟进。 https://github.com/Azure/Azure-Functions/issues/1867