问题描述
我有使用 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函数的具体错误。您可以使用应用程序洞察来获取详细信息错误。该功能必须配置相应的应用洞察,才能在门户上查看日志。
因此,您需要像这样为您的函数应用配置应用程序洞察:
然后您的函数应用将重新启动。
当然,你也可以去kudu查看:
首先,转到高级工具,然后单击“开始”,
然后进入kudu后,点击Debug Console -> CMD -> LogFiles -> Application -> Functions -> yourtriggername。你会在那里找到日志文件。
如果你是基于linux操作系统,进入kudu后,点击“日志流”(linux消费计划不支持)。