事实证明,问题在于最新的运行时支持新属性(configurationSource
) in function.json
这告诉运行时使用config
(这是function.json
) 或函数配置的 C# 属性。
本质上允许您像这样定义您的函数
现在您可以将函数定义为
[FunctionName("Harvester")]
public static async Task Run(
[TimerTrigger]TimerInfo myTimer,
TraceWriter log,
TextReader configReader)
{
}
连同一个function.json
看起来像这样
{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0",
"configurationSource": "config",
"bindings": [
{
"type": "timerTrigger",
"schedule": "0 */5 * * * *",
"useMonitor": true,
"runOnStartup": false,
"direction": "in",
"name": "myTimer"
},
{
"type": "blob",
"name": "configReader",
"path": "secured/app.config.json",
"connection": "XXX",
"direction": "in"
}
],
"disabled": false,
"scriptFile": "...",
"entryPoint": "..."
}
或者像这样
[FunctionName("Harvester")]
public static async Task Run(
[TimerTrigger("0 */5 * * * *")]TimerInfo myTimer,
TraceWriter log,
[Blob("secured/app.config.json", FileAccess.Read)]TextReader configReader)
{
}
像这样更简单的配置
{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0",
"configurationSource": "attributes",
"bindings": [
{
"type": "timerTrigger",
"name": "myTimer"
},
],
"scriptFile": "...",
"entryPoint": "..."
}
记下 的值configurationSource
在这两个例子中。
Visual Studio 2017 的工具默认执行后者。如果您想更改 function.json 以包含所有配置并更改configurationSource
您需要将该文件包含在您的项目中并将其标记为始终复制。这个 GIF 展示了如何做到这一点。
![](https://ahmelsayed.com/content/images/2017/08/2017-08-22_10-51-30.gif)