2017-08-21 16 views
2

F#でhttpトリガAzure関数を作成していますが、DocumentClientのパラメータをバインドして、Cosmos DBで実行されるクエリをより詳細に制御したいとします。これは私がこれまで持っているものです。Azure関数のパラメータ内のDocumentClientバインディング

Function.fs

namespace Functions 

open System 
open System.Net 
open System.Net.Http 
open Newtonsoft.Json 
open Microsoft.Azure.Documents 
open Microsoft.Azure.Documents.Client 
open Microsoft.Azure.WebJobs 
open Microsoft.Azure.WebJobs.Host 
open Microsoft.Azure.WebJobs.Extensions 
open Microsoft.Azure.WebJobs.Extensions.DocumentDB 

module Function = 
    let Run(req: HttpRequestMessage, [<DocumentDB>] client: DocumentClient, log: TraceWriter) = 
    log.Info(sprintf "F# HTTP trigger function processed a request.") 
    req.CreateResponse(HttpStatusCode.OK) 

function.json

{ 
    "disabled": false, 
    "scriptFile": "..\\..\\..\\build\\Debug\\Functions\\Functions.dll", 
    "entryPoint": "Functions.Function.Run", 
    "bindings": [ 
    { 
     "direction": "in", 
     "type": "httpTrigger", 
     "authLevel": "anonymous", 
     "name": "req", 
     "methods": [ "get" ], 
     "route": "users" 
    }, 
    { 
     "direction": "in", 
     "type": "documentDB", 
     "name": "client", 
     "connection": "COSMOSDB_CONNECTION_STRING" 
    }, 
    { 
     "direction": "out", 
     "type": "http", 
     "name": "res" 
    } 
    ] 
} 

host.json

{ 
    "frameworks": { 
    "net46":{ 
     "dependencies": { 
     "Dynamitey": "1.0.2", 
     "FSharp.Interop.Dynamic": "3.0.0", 
     "Microsoft.Azure.DocumentDB": "1.17.0", 
     "Microsoft.Azure.WebJobs.Extensions.DocumentDB": "1.0.0" 
     } 
    } 
    } 
} 

local.settings.json

{ 
    "IsEncrypted": false, 
    "Values": { 
    "AzureWebJobsDashboard": "", 
    "AzureWebJobsStorage": "UseDevelopmentStorage=true", 
    "COSMOSDB_CONNECTION_STRING": "AccountEndpoint=https://localhost:8081;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;" 
    } 
} 

開発ストレージとCosmos DBエミュレータを使用して、この機能をローカルで実行しています。私はF#に翻訳されようとしましたが、C#の場合はhereと記載されています。そしてそれはまた、言及されているものとほとんど同じですhere。しかし、私はエラーMicrosoft.Azure.WebJobs.Extensions.DocumentDB: 'Id' is required when binding to a DocumentClient propertyだけを取得します。

答えて

5

this issue on Githubで回避策があります。私が問題を発見し、 https://github.com/Azure/azure-functions-cli/issues/206を提出toolingに固定していますし、githubの

からコピーされ、次のリリース

の回避策を利用できるようになります。更新があるまで の最も簡単な回避策:

C:\Users\{user}\appdata\local\Azure.Functions.Cli\1.0.0に移動します。

メモ帳にfunc.exe.configを開きます。

これを探す:両方の場所に

<dependentAssembly> 
    <assemblyIdentity name="Microsoft.Azure.Documents.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-1.11.0.0" newVersion="1.11.0.0" /> 
</dependentAssembly> 

1.11.0.01.13.0.0ではそうあなたがで終わる置き換える:

<dependentAssembly> 
    <assemblyIdentity name="Microsoft.Azure.Documents.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-1.13.0.0" newVersion="1.13.0.0" /> 
    </dependentAssembly> 

保存して、再試行してください。

+0

はい、これが動作します。おめでとうございます! Microsoft.Azure.DocumentDB v.1.17をインストールしたので、v.1.13にダウングレードする必要がありました。 –

+0

回避策をお寄せいただき、ありがとうございます。 –

+0

Hm。私たちがPortal上の関数IDEでこのエラーを表示している場合、私たちが何をすべきか考えてみてください... – bc3tech

関連する問題