Azure 媒体服务 v3 与 Azure 函数不兼容

Azure Media Services v3 Not Compatible with Azure Function

我正在尝试重新创建此演练

https://docs.microsoft.com/en-us/azure/media-services/latest/stream-files-tutorial-with-api#download-the-sample

作为 Azure Functions,似乎 Azure Function SDK 与 Microsoft.IdentityModel.Clients.ActiveDirectory 之间存在一些不兼容性。如果您尝试像这样创建一个新的 ArmClientCredentials

ArmClientCredentials credentials = new ArmClientCredentials(config);

你会得到这样的错误

Could not load file or assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory, Version=3.19.4.11002

特定的 nuget 包已添加到项目中。这是否需要此处未显示的额外步骤?

我在使用 blob 触发器模板使用 Azure Functions 时遇到了类似的问题。我没有使用最新版本的 Microsoft.IdentityModel.Clients.ActiveDirectory(撰写本文时为 3.19.4),而是不得不降级到媒体服务包正在寻找的版本号(在错误中指示)。

我的 project.json 适用于媒体服务 v2:

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "windowsazure.mediaservices": "4.1.0.1",
        "windowsazure.mediaservices.extensions": "4.1.0.1",
        "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.1",
        "Microsoft.IdentityModel.Protocol.Extensions": "1.0.2.206221351"
      }
    }
   }
}

请检查以下设置是否适用于您和媒体服务 v3。至少,这些应该在您的 project.json in Azure Functions 中:

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "Microsoft.Azure.Management.Media": "1.0.0",
        "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.19.4",
        "WindowsAzure.Storage": "9.1.1"
      }
    }
   }
}

我可以通过将包的版本降到 3.14 来解决这个问题。这是解决方案的回购协议(使用 csproj)

https://github.com/isaac2004/AzureMediaServicesDemo