0

我正在使用 Visual Studio 15.7.6 和 Azure Functions V2 和 Web Job Tools 15.0.40617.0,并在我的开发机器上安装了 .Net Core SDK 2.1.302。

我可以创建一个新的 Azure Function 项目,以 .Net Standard 2.0 为目标并在本地正常运行。但是,当我将它部署到 Azure 并执行它时,它会返回 500 InternalServerError。

Visual Studio 模板生成以下模板化代码:

using System.IO;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs.Host;
using Newtonsoft.Json;

namespace FunctionApp1
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequest req, TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

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

            string requestBody = new StreamReader(req.Body).ReadToEnd();
            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");
        }
    }
}

Visual Studio 是否与工具链版本不同步?

我注意到,如果我使用 C# 脚本 (CSX) 在线创建函数,则以下方法有效,但我不知道它使用的是什么版本的函数:

using System.Net;
using System.Web;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    return req.CreateResponse(HttpStatusCode.OK, "Hello world!");
}

如果我添加 Microsoft.AspNetCore.Mvc 并尝试使用 IActionResults 它不会编译。

我猜我缺少一些兼容性问题?

是否有使用 Functions V2 和 .Net Standard 的示例 Visual Studio 项目在本地和 Azure 运行时中工作?

-约翰

4

1 回答 1

0

等等,我想我可能刚刚想通了。看起来像一个新的 Azure Function 默认为 v1 运行时(可以理解)。如果我将其更改为“测试版”,它会起作用。

在此处输入图像描述

我想发布这个来节省其他人我花在这个上的时间。

我是否正确解释了这一点?

-约翰

于 2018-08-12T00:26:00.790 回答