我正在使用 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 运行时中工作?
-约翰