Попытка получить доступ к элементу как к типу, несовместимому с массивом. Azure ошибка приложения функции - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь загрузить свое консольное приложение в функциональное приложение Azure, используя портал напрямую. Решение работает, как и ожидалось, на моем локальном VS2019, но такое же решение загружается в приложение-функцию, которое выдает «Попытка доступа к элементу как типу, несовместимому с массивом». ошибка. Можете ли вы предложить что-то, я пытался загрузить все необходимые DLL также с помощью #r "./Dllname.dll", все еще получая ту же ошибку.

#r "System.Data"
#r "System.Configuration"
#r "Newtonsoft.Json"
#r "System.Web"
#r "Microsoft.WindowsAzure.Storage"


#r "./Microsoft.Bot.Schema.dll"
#r "./Microsoft.Graph.Beta.dll"
#r "./Microsoft.Graph.Core.dll"
#r "./Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
#r "./Microsoft.Bot.Connector.dll"
#r "./RestSharp.dll"
#r "./Microsoft.SharePoint.Client.Runtime.dll"
#r "./Microsoft.SharePoint.Client.dll"
#r "./Microsoft.Rest.ClientRuntime.dll"
#r "./netstandard.dll"
#r "./System.Collections.dll"
// #r "./Microsoft.Extensions.Logging.dll"

using System;
using Microsoft.Graph;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System.Net.Http.Headers;
using Microsoft.Bot.Connector;
using Microsoft.Bot.Connector.Authentication;
using Microsoft.Bot.Schema;
using Microsoft.SharePoint.Client;
using Microsoft.Rest.ClientRuntime;
using RestSharp;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq.Expressions;

1 Ответ

0 голосов
/ 09 января 2020

Обновление:

Из вашего комментария я знаю, что вы используете функцию v1. В отличие от функции v2, сборка функции v1 управляется project.json.

Например,

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "Microsoft.ProjectOxford.Face": "1.1.0"
      }
    }
   }
}

Если вы хотите использовать пользовательскую сборку, вам необходимо сначала загрузить их. Для получения дополнительной информации посмотрите на этот .


Оригинальный ответ:

Если вы работаете с функцией v2, используя C# Скрипт, пожалуйста, обратите внимание, что вам нужно использовать function.proj для установки пакета. Точно так же, как управление пакетами работает на локальном компьютере.

Решение:

1.создать файл function.proj

enter image description here

2. напишите, какие пакеты вы хотите установить в этом файле.

 <Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Google.Apis.Sheets.v4" Version="1.40.3.1679" />
    <PackageReference Include="System.Data.SqlClient" Version="4.6.1" />
  </ItemGroup>
</Project>

3.адд-код в файле .crx:

#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

public static string DBConn = "123456";
public static ILogger Log = null;

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    Log=log;  
    DBConn="MySQLSrvrConnectionString";
    try
    {
        string spreadsheetId = "MyGoogleSheetId";
        //SheetsService service = GetSheetService();
        //if(service!=null)
        //{
        //    DoSomethingFunc(GetInsertCommand(GetSheetVals(service,spreadsheetId)));
        //}
    }
    catch (Exception ex)
    {
        Log.LogInformation($"Error ({DateTime.Now.ToLongDateString()}): {ex.Message}");
    }
    finally
    {
        Log.LogInformation($"Function Completed at: {DateTime.Now.ToLongDateString()}");
    }
    string name = req.Query["name"];

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    name = name ?? data?.name;

    return name != null
        ? (ActionResult)new OkObjectResult($"Hello, {name}")
        : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}

4.после компиляции удалось:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...