针对 .Net Standard 2.0 的新 VS Azure Function 项目因 InternalServerError 而失败
New VS Azure Function project targeting .Net Standard 2.0 fails with InternalServerError
我正在使用 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 并执行它时 returns 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 在本地和 Azure 运行 次运行的示例 Visual Studio 项目?
-约翰
等等,我想我可能刚刚弄明白了。看起来新的 Azure Functions 默认为 v1 运行时(可以理解)。如果我将其更改为 "beta" 它有效。
我想post这样做是为了节省别人我花在这上面的时间。
我的解释正确吗?
-约翰
我正在使用 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 并执行它时 returns 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 在本地和 Azure 运行 次运行的示例 Visual Studio 项目?
-约翰
等等,我想我可能刚刚弄明白了。看起来新的 Azure Functions 默认为 v1 运行时(可以理解)。如果我将其更改为 "beta" 它有效。
我想post这样做是为了节省别人我花在这上面的时间。
我的解释正确吗?
-约翰