我使用向导使用VS 17 15.3(带有nuget包Microsoft.NET.Sdk.Functions 1.0.2)创建了一个简单的HttpTrigger Azure函数。它给了我以下代码:
public static class Function1
{
[FunctionName("Function1")]
public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "HttpTriggerCSharp/name/{name}")]HttpRequestMessage req, string name, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
// Fetching the name from the path parameter in the request URL
return req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
}
}
当我使用VS在调试模式下运行该函数并使用Postman调用它时,它运行正常,我有身体响应。
当我启动相同的功能时,使用CLI:func host start并使用post man调用它,该函数不会返回正文。我有一个空内容的Http 200。 :(
我发现,在生成的function.json
中,没有http输出绑定。我生成了function.json
{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0",
"configurationSource": "attributes",
"bindings": [
{
"type": "httpTrigger",
"route": "HttpTriggerCSharp/name/{name}",
"methods": [ "get", "post" ],
"authLevel": "anonymous",
"name": "req"
}
],
"disabled": false,
"scriptFile": "..\\bin\\FunctionApp1.dll",
"entryPoint": "FunctionApp1.Function1.Run"
}
当我添加http out绑定时,它使用func host start
工作正常{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0",
"configurationSource": "attributes",
"bindings": [
{
"type": "httpTrigger",
"route": "HttpTriggerCSharp/name/{name}",
"methods": [ "get", "post" ],
"authLevel": "anonymous", "name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
],
"disabled": false,
"scriptFile": "..\\bin\\FunctionApp1.dll",
"entryPoint": "FunctionApp1.Function1.Run"
}
非常奇怪的是,在调试模式下,它的工作并没有直接使用cli ......
感谢您的帮助
答案 0 :(得分:1)
当我启动相同的功能时,使用CLI:func host start并使用post man调用它,该函数不会返回正文。我有一个空内容的Http 200
我创建了一个httpTrigger Azure功能应用程序,我可以在调试模式下运行时获取响应正文。
如果我使用CLI func host start
来运行函数,我也可以按预期获得响应体。
请求和响应
此外,基于我的测试(删除http输出绑定),如果在function.json中缺少http输出绑定,这将在响应主体中显示空内容。
注意 :该问题无法在我身边重现( Microsoft Visual Studio Enterprise 2017预览版(3)版本15.3.0预览版7.0 )。但对于此问题,正如您所做的那样,手动添加http out绑定将是解决此问题的解决方法。此外,如果可能,您可以发布GitHub issue并包含标题“CLI:”。