Azure Function Runtime 版本:2.0.11888.0(测试版)无法连接到 cosmosDB

Posted

技术标签:

【中文标题】Azure Function Runtime 版本:2.0.11888.0(测试版)无法连接到 cosmosDB【英文标题】:Azure Function Runtime version: 2.0.11888.0 (beta) become connot able to connect to cosmosDB 【发布时间】:2018-12-05 19:34:16 【问题描述】:

我正在开发简单的 node.js 代码,用于使用 http 触发器函数通过 Azure 函数应用程序将新文档插入 cosmosDB。这只是从http的参数中获取输入值并输出到cosmosDB(SQL api)。大约在过去 2 周内,它成功运行,但现在面临内部服务器错误。这就是为什么?是否影响 azure 函数的运行时小版本更新?

->function.json


  "bindings": [
    
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req"
    ,
    
      "name": "outputDocument",
      "type": "cosmosDB",
      "databaseName": "ToDoList",
      "collectionName": "Items",
      "createIfNotExists": true,
      "connectionStringSetting": "COSMOSDB_CONNECTION",
      "direction": "out"
    
  ]

->index.js

module.exports = function (context, req) 

    context.bindings.outputDocument = JSON.stringify( 
        name: req.query.name
    );

    context.done();
;

->浏览错误 INTERNAL SERVER ERROR

【问题讨论】:

【参考方案1】:

你说得对,函数运行时更新(以2.0.11857 开头)对 javascript 函数有一个重大更改。看到这个issue comment。

我们将弃用对 Node v6 的支持,这可能会影响已部署的函数应用。请将应用设置中的 WEBSITE_NODE_DEFAULT_VERSION 更改为 >=8.4.0 的 8.x 版本(例如:8.11.1)。

已经做了一些测试,如果我将WEBSITE_NODE_DEFAULT_VERSION 保留为6.5.0,它确实会导致内部服务器错误。

2.0.11857 发布之前,WEBSITE_NODE_DEFAULT_VERSION 在 v1 和 v2 函数中都是 6.5.0。之后,当我们将函数运行时从 ~1 升级到 beta 时,WEBSITE_NODE_DEFAULT_VERSION 会自动更改为 8.11.1

更新

节点版本更改对您不起作用,可能是因为 cosmosdb 扩展被破坏。当我无法在我这边重现您的问题时,您可以尝试一下。

重新安装扩展的步骤:

    停止您的函数应用程序。 访问https://<functionappname>.scm.azurewebsites.net/DebugConsole 并导航到D:\home\site\wwwroot。 删除文件夹binextension.csproj。 返回功能门户并创建 cosmosdb 触发器以再次安装扩展。 启动您的函数应用进行测试。

【讨论】:

你好....你的意思是你已经连接到 cosmosDB 只是在 node.js 版本上对齐?但是我不能。 ;( @KhinThet 是的,节点版本设置为8.11.1,我可以连接到 cosmosDB 并输出文档。您能否重新启动您的功能应用并重试? 是的,我确实重新启动了。但还没有成功。无论如何,我的应用运行时是 2.0.11888。 @KhinThet 您的功能似乎在其他地方损坏了。您的日志中有详细的错误信息吗?如果可以接受,可以尝试新建一个函数应用进行测试。 抱歉我的回复晚了。我总是每天至少尝试一次这个过程,但对我来说仍然没有成功。我现在使用的是 azure logic apps,它是 azure function app 的简单实例。如果可以的话,我也想通过 azure function app 取得成功。

以上是关于Azure Function Runtime 版本:2.0.11888.0(测试版)无法连接到 cosmosDB的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Azure Function App Startup 中 DI 自定义对象

错误:将 Function 部署到 Azure 后,无法加载文件或程序集“System.ServiceModel,版本 = 4.0.0.0”

部署到 Azure 网站时,您必须向 System.Runtime... 添加引用

Azure cspack.exe 引发 System.Runtime.Remoting.RemotingException

Azure Function v2 引用了 Newtonsoft.Json 版本高于 Microsoft.NET.Sdk.Functions 的项目

部署 Azure 函数时无法从程序集“System.Runtime”加载类型“System.IO.Path”