我对如何制作一个简单的Azure功能感到困惑。在Visual Studio 2017(我使用的是15.5.6版本)中,我按照此处的说明创建了一个简单的项目:https://docs.microsoft.com/en-us/azure/azure-functions/functions-develop-vs
我的步骤:
一切都很好。我通过PostMan调用该函数并得到此错误:
“发生了ScriptHost错误 执行函数时出现异常:Functions.Function1。 Microsoft.Azure.WebJobs.Host:异常绑定参数'log'。 Microsoft.Azure.WebJobs.Host:没有为参数'log'提供值。“
作为参考,这里是他们创建的模板函数,我根本没有修改过:
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
namespace TestFunc
{
public static class Function1
{
[FunctionName("Function1")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Admin, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
// parse query parameter
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
// Set name to query string or body data
name = name ?? data?.name;
return name == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
}
}
}
如果我删除“TraceWriter log”并调用“log.Info(....”然后再试一次,我会收到此错误:
“发生了ScriptHost错误 执行函数时出现异常:Functions.Function1。 mscorlib:调用目标抛出了异常。 TestFunc:找不到方法:'System.Net.Http.HttpResponseMessage System.Net.Http.HttpRequestMessageExtensions.CreateResponse(System.Net.Http.HttpRequestMessage,System.Net.HttpStatusCode,!! 0)'。“
我尝试将.Net版本更改为4.7但没有任何改变。我尝试将功能版本更改为v2而不是v1(即使它目前处于测试阶段),但也没有发生任何事情。模板添加的唯一NuGet包是Microsoft.NET.Sdk.Functions版本1.0.6。有一个1.0.7的更新可用,但这也无济于事。
我不知道该尝试什么。这是默认模板。我有另一个功能项目工作正常,但这是在VS2015最新的时候做的,并且在你必须有那些function.json文件来制作你的预编译DLL的时候。我希望能够使用当前的系统,因为它似乎是最好的方式,但如果我不能让它工作,我可能会回到旧的做事方式。感谢。