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