Azure功能 - VS2017工具 - 在function.json

时间:2017-08-27 22:24:05

标签: azure visual-studio-2017 azure-functions

我使用向导使用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 ......

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

  

当我启动相同的功能时,使用CLI:func host start并使用post man调用它,该函数不会返回正文。我有一个空内容的Http 200

我创建了一个httpTrigger Azure功能应用程序,我可以在调试模式下运行时获取响应正文。

如果我使用CLI func host start来运行函数,我也可以按预期获得响应体。

enter image description here

请求和响应

enter image description here

此外,基于我的测试(删除http输出绑定),如果在function.json中缺少http输出绑定,这将在响应主体中显示空内容。

注意 :该问题无法在我身边重现( Microsoft Visual Studio Enterprise 2017预览版(3)版本15.3.0预览版7.0 )。但对于此问题,正如您所做的那样,手动添加http out绑定将是解决此问题的解决方法。此外,如果可能,您可以发布GitHub issue并包含标题“CLI:”。