処理方法が不明なAzureサービスバス出力バインディングに問題があります。私は同じような質問を見つける運がなかったので、これは重複している場合は謝罪します。Azure関数のサービスバス出力バインディングでエラーが発生しました
ローカルのVS2017開発プロセスを使用しようとしていますので、function.jsonバインディングを自動的に生成する必要があります。関数の署名は次のとおりです。
[FunctionName("RequestNewPaladinInvitation")]
public static HttpResponseMessage Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")]HttpRequestMessage req,
[ServiceBus("thequeue")] ICollector<Invitation> invitationOutputQueue,
TraceWriter log)
{
//Do some stuff and write to the queue
invitationOutputQueue.Add(invite);
}
関数をローカルで実行すると、次のエラーが発生します。
Microsoft.Azure.WebJobs.Host:エラーインデックス方法 'RequestNewPaladinInvitation.Run'。 Microsoft.Azure.WebJobs.Host: パラメータ 'invitationOutputQueue'をICollector`1にバインドできません。 パラメータTypeがバインディングでサポートされていることを確認してください。あなたが のバインディング拡張機能(ServiceBus、Timersなど)を使用している場合は、 スタートアップコードの内線番号の登録メソッドを呼び出していることを確認してください(例:config.UseServiceBus()、config.UseTimers )など)。 次のように[2017年9月1日午前五時42分49秒PM]エラーインデックスメソッド が 'RequestNewPaladinInvitation.Run'
私host.jsonとlocal.settings.json両方が定義されています。
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "<MyStorageAccountInfo>",
"AzureWebJobsDashboard": "<MyDashboardInfo>",
"AzureWebJobsServiceBus": "<MyServiceBusConnectionString>"
}
}
を
AzureWebJobsServiceBus
の値を定義すると、その機能のアプリケーション全体の任意のServiceBusバインディングに対するデフォルトのServiceBusAccountになります。
また、次の代替属性[ServiceBus("createpaladininvitation",Connection = "ServiceBus")]
を持つアカウントの接続文字列にServiceBusバインディングを明示的に指定してみました。大会の私の理解は、プロパティのAzureWebJobsの部分を含めるべきではないということです。私が誤解した場合に備えて、[ServiceBus("createpaladininvitation",Connection = "AzureWebJobsServiceBus")]
も試しました。私はさらに、メソッドとパラメータの両方を次の属性、[ServiceBusAccount("ServiceBus")]
で修飾しようとしました。また、ServiceBus属性のConnectionパラメータと同じバリエーションを試しました。
すべての場合、ServiceBus出力バインディングに対して生成されたバインディングがないことを示す同じfunction.json出力が表示されます。ここで
はfunction.jsonです:
{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0",
"configurationSource": "attributes",
"bindings": [
{
"type": "httpTrigger",
"methods": [
"post"
],
"authLevel": "anonymous",
"name": "req"
}
],
"disabled": false,
"scriptFile": "..\\bin\\AzureFunctionsPoc.dll",
"entryPoint": "AzureFunctionsPoc.RequestNewPaladinInvitation.Run"
}
私は何かを明らかに欠けているように感じます。
私が起こっているのかを把握し続けることを試みたとして[更新]
は、私は、ローカルの機能を実行し、生成されたfunction.jsonファイルを編集し、私はが生成されているはずだと思うというバインディングを追加しました。その結果、手動で編集function.jsonは次のとおりです。これらの編集で
{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0",
"configurationSource": "attributes",
"bindings": [
{
"type": "httpTrigger",
"methods": [
"post"
],
"authLevel": "anonymous",
"name": "req"
},
{
"type": "serviceBus",
"name": "invitationOutputQueue",
"queueName": "createpaladininvitation",
"connection": "ServiceBus",
"direction": "out"
}
],
"disabled": false,
"scriptFile": "..\\bin\\AzureFunctionsPoc.dll",
"entryPoint": "AzureFunctionsPoc.RequestNewPaladinInvitation.Run"
}
、予想通りの方法が正確に動作します。
これは、私が紛失している構文や大会の問題、またはツールのバグのように感じます。
[この質問と同様](https://stackoverflow.com/questions/45986719/using-azure-functions-in-vs2017-cannot-bind-to-servicebus-queue-as-an-output) ) – Mikhail
@Mikhail - あなたがリンクした質問をすばやく見ました。それは同様のようでした。しかし、私の場合、その質問とは異なり、トリガーのタイプを変更しても差は見られませんでした。しかし、それを指摘していただきありがとうございます。 –