从 Visual Studio 和类库部署 azure 函数

问题描述

我有使用 Visual Studio 开发的 azure 函数,该函数使用外部类库,并且该函数还有一些包。当我部署到 azure 函数应用程序并运行该函数时,M 收到错误 500 内部服务器错误

我还需要部署类库和包吗?如果是,如何部署?

请帮我解决这个问题

  using Microsoft.Azure.WebJobs;
  using Microsoft.Azure.WebJobs.Extensions.Http;
  using Microsoft.AspNetCore.Http;
  using Microsoft.Extensions.Logging;
  using Newtonsoft.Json;
 using IronPython.Hosting;//for DLHE
 using Microsoft.Scripting.Hosting;//provides scripting abilities comparable to batch files
using System.Diagnostics;
using IronPython.Compiler;
using System.Text;
using Microsoft.Scripting;
using DatasetLibrary;
using System.Data;

 namespace ExecutePyCode
   {
public static class Function1
{
    [FunctionName("Function1")]
    public static int Run(
        [HttpTrigger(AuthorizationLevel.Function,"get","post",Route = null)] HttpRequest req,ILogger log)
    {
        log.Loginformation("C# HTTP trigger function processed a request.");

        string name = req.Query["name"];

        int result = 0;

        var engine = Python.CreateEngine();
        var scope = engine.CreateScope();
        //try
        //{

        var compilerOptions = (pythoncompilerOptions)engine.GetCompilerOptions();
        //compilerOptions.Module = IronPython.Runtime.ModuleOptions.co
        //ErrorSink errorSink = null;
        //ErrorListener errorListener = new ErrorSinkProxyListener(errorSink);
        //var scriptSource = engine.CreateScriptSourceFromFile(@"C:\Nidec\PythonScript\download_nrlist.py",Encoding.UTF8,Microsoft.Scripting.sourceCodeKind.File);
        //var compiledCode = scriptSource.Compile();
        //compiledCode.Execute(scope);
        //engine.ExecuteFile(@"C:\Nidec\PythonScript\download_nrlist.py",scope);

        //get function and dynamically invoke
        //var calcAdd = scope.Getvariable("CalcAdd");
        //result = calcAdd(34,8); // returns 42 (Int32)
     
       //get values from external class library
        DatasetValues datasetValues = new DatasetValues();
        DataTable dt = datasetValues.GetDatasetValues();
        for (int i = 0; i <= dt.Rows.Count - 1; i++)
        {
            for (int j = 0; j <= dt.Columns.Count - 1; j++)
            {
                Console.WriteLine(dt.Rows[i][j]);

            }
        }

        return result;
    }
}

}

解决方法

项目的库和包在 project.json 中定义,并在您将函数部署到 Azure 时自动安装。

,

500错误对解决这个问题没有帮助,需要查看azure函数的具体错误。您可以使用应用程序洞察来获取详细信息错误。该功能必须配置相应的应用洞察,才能在门户上查看日志。

因此,您需要像这样为您的函数应用配置应用程序洞察:

enter image description here

然后您的函数应用将重新启动。

当然,你也可以去kudu查看:

首先,转到高级工具,然后单击“开始”,

enter image description here

然后进入kudu后,点击Debug Console -> CMD -> LogFiles -> Application -> Functions -> yourtriggername。你会在那里找到日志文件。

如果你是基于linux操作系统,进入kudu后,点击“日志流”(linux消费计划不支持)。