2017-08-30 58 views
0

我使用的是QueueTrigger具有以下特徵:Azure的功能是function.json

public static void Run([QueueTrigger("tester")]string myQueueItem,[Blob("local/{queueTrigger}")]ICloudBlob myBlob,TraceWriter log) 

在function.json結合產生的是:

"bindings": [ 
    { 
     "type": "queueTrigger", 
     "queueName": "tester", 
     "connection": "AzureWebJobsStorage", 
     "name": "myQueueItem" 
    } 
    ], 

這不起作用,因爲它不會綁定適當的blob作爲綁定。如果我手動編輯正確結合,因爲它應該的function.json:

"bindings": [ 
{ 
    "type": "queueTrigger", 
    "queueName": "tester", 
    "connection": "AzureWebJobsStorage", 
    "name": "myQueueItem" 
}, 
{ 
    "name": "myBlob", 
    "type": "blob", 
    "path": "local/{queueTrigger}", 
    "direction": "in", 
    "connection": "AzureWebJobsStorage" 
}], 

我的問題是我怎麼能表明所以function.json被適當地產生在C#代碼,輸入綁定?我知道輸出綁定你可以使用out參數來修飾它,但是對於輸入參數呢?這是一個錯誤還是我錯過了什麼?

+0

什麼版本的CLI您使用的是?你正在使用哪個版本的'Microsoft.NET.Sdk.Functions'?你可以在你的csproj – ahmelsayed

+0

中發現我正在使用函數1.0.0並通過Visual Studio工具來做 – Dexterity

回答

1

這是通過函數VS工具創作的嗎?這隻會生成一個描述觸發器的函數.json [1]。其他綁定直接從C#屬性中讀取,就像使用WebJobs SDK一樣。

該工具自動生成的function.json還應該具有「configurationSource」:「attributes」屬性。這就是告訴函數運行時從屬性讀取綁定。 如果缺少,那麼這可能意味着您有預發佈工具,需要更新您的CLI和Microsoft.NET.Sdk.Functions軟件包。

你能確認屬性設置嗎?

此外,您的「運行」方法應該有一個[FunctionName]屬性。

[1]這是從預發佈改變了構建工具,請參閱https://github.com/Azure/azure-webjobs-sdk-script/issues/1508

+0

是的,我正在使用屬性,就像你在問題中看到的那樣,它有配置源。我也有一個FunctionName屬性,我只是省略了那些顯示相關內容的東西。我正在使用VS 15.3.2。這一天剛剛更新。清楚的是,如果我手動將綁定添加到bin中的function.json,它將按預期工作。如果離開VS,它不起作用 – Dexterity

+0

當它不起作用時 - 您是在本地(通過CLI)還是在Azure中運行它?如果您在Azure中運行的版本已鎖定爲舊版本(在#1508修復之前),那麼您會看到此故障。 –

+0

我在本地運行它。我設法通過在VS上進行修復並重新安裝功能工具來正常工作。 – Dexterity