面向.Net Standard 2.0的新VS Azure Function项目失败,并出现InternalServerError

时间:2018-08-12 00:11:17

标签: .net-core visual-studio-2017 asp.net-core-2.0 azure-functions azure-functions-core-tools

我正在使用Visual Studio 15.7.6和Azure Functions V2和Web作业工具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,它将无法编译。

我猜想我有一些兼容性问题?

是否存在一个使用Function V2和.Net Standard的示例Visual Studio项目,该项目可在本地和Azure运行时中运行?

-约翰

1 个答案:

答案 0 :(得分:0)

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

enter image description here

我想发布此消息,以节省其他人在此上花费的时间。

我能正确解释吗?

-约翰