在门户中运行 Azure 功能时出现内部服务器错误
Posted
技术标签:
【中文标题】在门户中运行 Azure 功能时出现内部服务器错误【英文标题】:Getting Internal server Error when i run my Azure Function in the Portal 【发布时间】:2019-02-11 09:26:42 【问题描述】:我从 Visual Studio 创建并发布了一个 Http 触发的 Azure 函数。该函数用于连接到 iot 集线器并获取模块孪生属性。
我已经使用模块连接字符串配置了 local.settings.json 文件,并且还在门户的应用程序设置中添加了相同的内容。 但是当我在门户中运行该功能时,它给了我内部服务器错误 500。
我运行的Azure函数版本是v1。
我正在使用的json文件:
local.settings.json
"IsEncrypted": false,
"Values":
"AzureWebJobsStorage": "xxxxxxxx",
"AzureWebJobsDashboard": "xxxxxx",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"ModuleConnectionString": "xxxxxxxxx"
host.json
"http":
"routePrefix": "api",
"maxOutstandingRequests": 20,
"maxConcurrentRequests": 10,
"dynamicThrottlesEnabled": false
,
"version": "2.0"
function.json
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.19",
"configurationSource": "attributes",
"bindings": [
"type": "httpTrigger",
"methods": [
"get",
"post"
],
"authLevel": "function",
"name": "req"
],
"disabled": false,
"scriptFile": xxxx.dll",
"entryPoint": "xxxxxxxx.Run"
以下是代码:
function1.cs
public static class Function1
[FunctionName("Function1")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequest req, ILogger log)
log.LogInformation("C# HTTP trigger function processed a request.");
var moduleConnectionString = Environment.GetEnvironmentVariable("ModuleConnectionString", EnvironmentVariableTarget.Process);
ModuleClient _moduleClient = ModuleClient.CreateFromConnectionString(moduleConnectionString, TransportType.Amqp);
var sample = new TwinSample(_moduleClient);
await sample.RunSampleAsync();
twin.cs
class TwinSample
private ModuleClient _moduleClient;
public TwinSample(ModuleClient moduleClient)
this._moduleClient = _moduleClient;
public async Task<string> RunSampleAsync()
Console.WriteLine("Retrieving twin...");
Twin twin = await _moduleClient.GetTwinAsync().ConfigureAwait(false);
Console.WriteLine("\tInitial twin value received:");
Console.WriteLine($"\ttwin.ToJson()");
return twin.ToJson();
我尝试将运行时版本从 1 更改为 2,反之亦然。仍然无法正常工作。同样在我设置的应用程序设置下
WEBSITE_NODE_DEFAULT_VERSION
从 6.5.0 到 8.11.1.
谁能帮我解决这个问题?
【问题讨论】:
Function App 的日志里有什么? @Mikhail 在Monitor部分,日志c# HTTP触发函数处理了一个请求有日志级别的信息。之后我收到日志级别错误。日期、消息和日志级别是我可以在调用详细信息中找到的唯一信息。 那么错误信息是怎么说的呢? @Mikhail 这是来自控制台的日志。 2018-09-06T09:24:17 欢迎您,您现在已连接到日志流服务。 2018-09-06T09:24:31.605 [信息] 执行“Function1”(原因=“此函数是通过主机 API 以编程方式调用的。”,ID=4832f4bb-325c-489b-92be-6d7427e9cb1b)2018-09-06T09: 24:31.605 [信息] C# HTTP 触发器函数处理了一个请求。 2018-09-06T09:24:31.662 [错误] 执行“Function1”(失败,Id=4832f4bb-325c-489b-92be-6d7427e9cb1b) 错误信息字段为空 【参考方案1】:HTTP 函数应该实际返回一个 HTTP 结果,尝试将你的函数更改为
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req,
ILogger log)
// your code goes here
return req.CreateResponse(HttpStatusCode.OK, "Done");
【讨论】:
以上是关于在门户中运行 Azure 功能时出现内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章