csg*_*csg 20 azure-functions azure-cosmosdb
我正在学习微软的演练,学习如何使用 CosmosDb 为 azure 函数添加输入绑定,但是在调用该函数时,它不断返回内部服务器错误(500 http 代码)。
function.json 中 azure 函数的配置是:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"name": "bookmark",
"direction": "in",
"type": "cosmosDB",
"databaseName": "func-io-learn-db",
"collectionName": "Bookmarks",
"connectionStringSetting": "learn_DOCUMENTDB",
"id": "{id}",
"partitionKey": "{id}",
"sqlQuery": ""
}
]
}
Run Code Online (Sandbox Code Playgroud)
应用程序服务中有一个learn_DOCUMENTDB配置设置,它具有到 cosmos db 实例的有效连接字符串(自动创建)。
错误日志条目说:
无法将 CosmosDB 绑定到类型“System.String”。可能的原因:1) 尝试绑定到 'Microsoft.Azure.Documents.Client.DocumentClient, Microsoft.Azure.DocumentDB.Core, Version=2.9.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 但用户类型程序集是 'System.String , System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e。
我做错了什么吗?
小智 31
我遇到了同样的问题,结果新 UI 生成了与旧 UI 不同的绑定。
新用户界面:
{
"name": "bookmark",
"direction": "in",
"type": "cosmosDB",
"databaseName": "func-io-learn-db",
"collectionName": "Bookmarks",
"connectionStringSetting": "learn-0088a129-899f-4d18-b4db-5fa74daf1cc3_DOCUMENTDB",
"id": "{id}",
"partitionKey": "{id}",
"sqlQuery": ""
}
Run Code Online (Sandbox Code Playgroud)
旧用户界面:
{
"type": "cosmosDB",
"name": "bookmark",
"databaseName": "func-io-learn-db",
"collectionName": "Bookmarks",
"connectionStringSetting": "learn-0088a129-899f-4d18-b4db-5fa74daf1cc3_DOCUMENTDB",
"id": "{id}",
"partitionKey": "{id}",
"direction": "in"
}
Run Code Online (Sandbox Code Playgroud)
删除
"sqlQuery": ""
Run Code Online (Sandbox Code Playgroud)
绑定的一部分为我修复了它。
您可以切换回旧版界面点击“有问题?点击回到经典的功能应用的管理经验”的应用服务概述页面上,你可以看到在这里。
小智 29
对于仍在寻找这一点的任何人,如果上述解决方案不能解决问题。
我遇到了同样的问题,无法检索到数据。按照上面的建议检查了 function.json。问题不在于“sqlQuery”参数。
根据 Microsoft Learn 上的教程,在创建 Input DB 绑定时,我已将绑定和分区 ID 值设置为“id”和“/id”。这在 function.JSON 文件中按原样显示。所以我的 JSON 文件看起来像:“id”:“id”,“partitionKey”:“/id”
查看上述答案后,我将数据库的 function.JSON Bindings 更改为如下所示:
"id": "{id}",
"partitionKey": "{id}"
Run Code Online (Sandbox Code Playgroud)
只有在此更改之后它才开始工作。
手动将 function.json 更新为:
"id": "{id}",
"partitionKey": "{id}",
Run Code Online (Sandbox Code Playgroud)
对我有用,但是一旦调用或保存该函数,它就会将更改恢复为:
"id": "id",
"partitionKey": "/id",
Run Code Online (Sandbox Code Playgroud)
并再次停止工作。我可以让它保留更改的唯一方法是像这样编辑集成部分: 输入绑定 的设置然后设置工作。
| 归档时间: |
|
| 查看次数: |
5018 次 |
| 最近记录: |