在门户中运行 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 功能时出现内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

上传到 Azure 存储时出现内部 500 错误

替换 Azure Blob 存储中的文件时出现错误 500

Azure 功能:访问存储帐户时出现 403 错误

23.Azure技术支持

JS Azure 博客存储 - 运行时出现需要错误?

尝试发送 100 MB 批处理时出现 Azure 服务总线错误