当前位置: 首页 > 知识库问答 >
问题:

使用CosmosDB文档输出创建HttpTrigger Azure函数时出错

方和顺
2023-03-14

我想创建一个Azure函数,它接受传递给它的JSON主体,并将该文档插入到Azure COSMOSDB实例中。

并按如下方式实现该函数:

#r "Newtonsoft.Json"
using Newtonsoft.Json.Linq;

using System.Net;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log, object outputDocument)
{
    var requestContent = await req.Content.ReadAsStringAsync();
    log.Verbose($@"Received request:\n{requestContent}");

    var newDoc = JObject.Parse(requestContent);
    newDoc["Id"] = Guid.NewGuid().ToString();
    newDoc["shardKey"] = newDoc.Value<string>(@"Id").Substring(8);

    outputDocument = newDoc;

    return req.CreateResponse(System.Net.HttpStatusCode.Created);
}

在门户中,我放入了一个简单的示例文档:

{
  "prop1": 2,
  "prop2": "2017-02-20",
}

{
  "id": "145ee924-f824-4064-8364-f96dc12ab138",
  "requestId": "5a27c287-2c91-40f5-be52-6a79c7c86bc2",
  "statusCode": 500,
  "errorCode": 0,
  "message": "'UploadDocumentToCosmos' can't be invoked from Azure WebJobs SDK. Is it missing Azure WebJobs SDK attributes?"
}

共有1个答案

叶鸿
2023-03-14

对于异步函数,您应该使用IAsyncCollector:

public static async Task<HttpResponseMessage> Run(
    HttpRequestMessage req, TraceWriter log, 
    IAsyncCollector<object> outputDocuments)
{
    ...
    await outputDocuments.AddAsync(newDoc);
}
 类似资料:
  • 尝试使用REST API创建文档时,出现以下错误: 在各种SDK中,有一个可选参数要包含,,如果设置为则如果未提供ID,将拒绝带有此错误的请求。我提出了一个非常简单的REST请求,所以我自己没有添加这个参数(我甚至不知道我会添加什么头——大概是头——因为RESTAPI的文档没有涵盖它)。 唯一需要注意的是,集合有一个定义的分区键。我找不到任何文档说如果定义了分区键就需要一个ID,但是情况似乎就是这

  • 我们正在使用cosmosdb记录我们的应用程序日志。我们的日志有两层,一层有一般的信息,另一层有一般日志的更详细的信息。我们还在其他两个集合中记录了这些的副本以供备份。所以我们总共有四个系列。在我们的代码中,我们使用异步CreateDocumentAsync来创建这些日志。我们将任务存储在列表中,并使用Task.waitall来完成所有任务。在开发环境中,我们没有看到任何错误,但在生产中,当创建新

  • 创建一个函数,但它给出的错误数据库表如下所示

  • 我对Azure函数和CosmosDB输出绑定有问题。我现在拥有的是:我从一个Cosmos DB容器中读取数据,处理一些东西,然后将结果输出回同一个DB但不同的容器。我正在使用VSCode和python,并测试了其他输出(blob、HTTP响应等),所有这些都正常工作,所以我认为这是CosmosDB的问题。 主要功能定义如下: function.json输出绑定如下: 请注意,我使用和我的扩展手动安

  • 你可以使用 str函数将Beautiful Soup文档(或者它的子集)转换为字符串, 或者使用它的code>prettify或renderContents。 你也可以使用unicode函数以Unicode字符串的形式获得。 prettify 方法添加了一些换行和空格以便让文档结构看起来更清晰。 它也将那些只包含空白符的,可能影响一个XML文档意义的文档节点(nodes)剔除(strips out

  • 当我像这样创建时,它工作得很好: 但当我尝试发送消息创建if时,它会抛出一个异常: 发送功能: 函数有什么问题?