CSlobではなくC#実装で[BlobAttribute]を使用せずに、blob型の入力パラメータをstring/TextReaderにバインドできません。AzureファンクションBLOBバインド
私は取得していますエラーは次のとおりです。
Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.Harvester'.
Microsoft.Azure.WebJobs.Host: Cannot bind parameter 'configReader' to type
TextReader. Make sure the parameter Type is supported by the binding. If
you're using binding extensions (e.g. ServiceBus, Timers, etc.) make sure
you've called the registration method for the extension(s) in your startup
code (e.g. config.UseServiceBus(), config.UseTimers(), etc.).
function.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"
}
],
関数のシグネチャ(結合しないconfigReader
):
[FunctionName("Harvester")]
public static async Task Run(
[TimerTrigger("0 */5 * * * *")]TimerInfo myTimer,
TraceWriter log,
TextReader configReader)
これは(ただし、うまくいきますバインドconfigReader
:
ブロブのパスを指定せずに動作させる方法については、BlobAttribute
をご覧ください。私は理想的には、コードの外にBlobの設定を保持したい、私の関数は、より移植可能になる方法。問題がfunction.json
に新しいプロパティ(configurationSource
)をサポートする最新のランタイムであることが判明し
VS2017ツールを使用していますか?もしあなたがそうであれば、 'function.json'ファイルを含む' Harvester'というフォルダの出力フォルダをチェックインできますか? 'configurationSource'と呼ばれるプロパティがあり、その値がどのような値であるかを調べることができますか? – ahmelsayed
私はVS2017ツーリングを使用していますが、ファイルをチェックしましたが、 'configurationSource'というプロパティはありません。 'configReader'を参照していましたか?もしそうなら、それは私の元の質問に記載されている通りです(上のリストは空白のUIから来ています)。 –
いいえ、 'configurationSource'は、属性対コンフィギュレーションファイルを使用するように関数ランタイムに指示するために2017ツールで導入された新しいプロパティです。あなたのcsprojの ''バージョンを確認できますか?最新版は[1.0.2](https://www.nuget.org/packages/Microsoft.NET.Sdk.Functions)ですが、これは 'configurationSource'を' attributes'にする必要があることに注意してください。それを 'config'に変更して、属性の代わりにconfigを使うようにランタイムに指示してください。その後、プロジェクトにそのjsonファイルを含める必要があります – ahmelsayed