Не удалось загрузить указанный файл Ошибка внутри функции Azure при аутентификации Azure в функциях Azure - PullRequest
0 голосов
/ 19 октября 2018

Я получаю следующую ошибку и не знаю, что это за ошибка.Какой файл он ищет?

enter image description here

Код, который я хочу запустить в функциях Azure: run.csx

#r "/home/.nuget/microsoft.azure.management.containerinstance.fluent/1.16.1/lib/netstandard1.4/Microsoft.Azure.Management.ContainerInstance.Fluent.dll"
#r "/home/.nuget/microsoft.azure.management.fluent/1.14.0/lib/netstandard1.4/Microsoft.Azure.Management.Fluent.dll"
#r "/home/.nuget/microsoft.azure.management.resourcemanager.fluent/1.16.1/lib/netstandard1.4/Microsoft.Azure.Management.ResourceManager.Fluent.dll"
using System;
using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.ContainerInstance.Fluent;


public static IAzure GetAzureContext(string authFilePath, ILogger log)
{
    IAzure azure;
    ISubscription sub;
    try
    {
        azure = Azure.Authenticate(authFilePath).WithDefaultSubscription();
        sub = azure.GetCurrentSubscription();
        //log.LogInformation($"Authenticated with subscription '{sub.DisplayName}' (ID: {sub.SubscriptionId})");
    }
    catch (Exception ex)
    {
        log.LogInformation($"\nFailed to authenticate:\n{ex.Message}");
        if (String.IsNullOrEmpty(authFilePath))
        {
            log.LogInformation("Have you set the AZURE_AUTH_LOCATION environment variable?");
        }
        throw;
    }
    return azure;
}


public static void Run(string myEventHubMessage, ILogger log)
{
    // Authenticate with Azure
    string authFilePath = "/home/site/wwwroot/EventHubTriggerCSharp3/my.azureauth";
    IAzure azure = GetAzureContext(authFilePath, log); 
    log.LogInformation($"C# Event Hub trigger function processed a message: {myEventHubMessage}");
}

и файл зависимостей - function.proj

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
    </PropertyGroup>  
    <ItemGroup>
        <PackageReference Include="Microsoft.Azure.Management.ContainerInstance.Fluent" Version="1.16.1" />
    </ItemGroup>
</Project>

Бит, если я комментирую строку, где я вызываю функцию GetAzureContext в void Run, он работает успешно.

1 Ответ

0 голосов
/ 25 октября 2018

Если время выполнения вашей функции ~ 1, создайте project.json со следующим содержимым.

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "xxxxxx": "xxx.xx.xx"
      }
    }
   }
} 

Но теперь, когда мы создаем функцию Azure на портале Azure сейчас, по умолчаниюрабочая версия ~ 2.нам нужно создать function.proj , как показано ниже.

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
    </PropertyGroup>
     <ItemGroup>
    <PackageReference Include="Microsoft.Azure.Management.Fluent" Version="1.16.1" />
    <PackageReference Include="Microsoft.Azure.Management.ResourceManager.Fluent" Version="1.16.1" />
  </ItemGroup>
</Project>

enter image description here После того, как вы загрузите function.proj, он добавит к среде хоста функции,Также необходимо удалить ненужные #r "Microsoft.Azure.Management.Fluent" и "Microsoft.Azure.Management.ResourceManager.Fluent" , иначе вы получите ошибку .

using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent;

try
{
      var azure = Azure.Authenticate(@"D:\\home\\site\\wwwroot\\my.azureauth").WithDefaultSubscription();
      var sub = azure.GetCurrentSubscription();
      log.LogInformation($"Authenticated with subscription '{sub.DisplayName}' (ID: {sub.SubscriptionId})");
 }
catch(Exception ex)
{
        log.LogInformation($"\nFailed to authenticate:\n{ex.Message}");
        throw;
}

Результат теста:

enter image description here

...