Azure HTTP函数触发器2.x,Cosmos DB输出本地开发人员主机失败

Azure HTTP函数触发器2.x,Cosmos DB输出本地开发人员主机失败,azure,azure-functions,azure-cosmosdb,azure-functions-runtime,azure-functions-core-tools,Azure,Azure Functions,Azure Cosmosdb,Azure Functions Runtime,Azure Functions Core Tools,我正在使用azure functions 2.x和dotnet core开发一个http触发器,在VS 2017 15.8.2的最新更新之后,我在本地运行该函数时遇到以下错误 1/9/2018 13:30:50] Stopping Host [1/9/2018 13:31:06] Reading host configuration file 'C:\Users\MattDouhan\source\repos\NWMposTransInput\NWMposTransInput\bin\Debug

我正在使用azure functions 2.x和dotnet core开发一个http触发器,在VS 2017 15.8.2的最新更新之后,我在本地运行该函数时遇到以下错误

1/9/2018 13:30:50] Stopping Host
[1/9/2018 13:31:06] Reading host configuration file 'C:\Users\MattDouhan\source\repos\NWMposTransInput\NWMposTransInput\bin\Debug\netstandard2.0\host.json'
[1/9/2018 13:31:06] Host configuration file read:
[1/9/2018 13:31:06] {}
[1/9/2018 13:31:06] Starting Host (HostId=desktop7cks1do-260439321, InstanceId=5fd41a43-b3ca-47e4-adf6-320d40fa9613, Version=2.0.11960.0, ProcessId=13156, AppDomainId=1, Debug=False, ConsecutiveErrors=5, StartupCount=6, FunctionsExtensionVersion=)
[1/9/2018 13:31:07] A ScriptHost error has occurred
[1/9/2018 13:31:07] System.Private.CoreLib: Could not load type 'Microsoft.Azure.WebJobs.Hosting.IWebJobsStartup' from assembly 'Microsoft.Azure.WebJobs.Host, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null'.
[1/9/2018 13:31:07] Stopping Host
我正在运行功能核心工具2.0.1-Beta.35和运行时版本2.0.11960.0

函数如下所示

using System.IO;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs.Host;
using Newtonsoft.Json;
using Microsoft.Extensions.Logging;
using System;

namespace NWMposTransInput
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]
        HttpRequest req, ILogger log,
            [CosmosDB(
            databaseName: "xxxx",
            collectionName: "yyyy",
            ConnectionStringSetting = "CosmosDbConnection")]out dynamic document,
            ILogger log2)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string name = req.Query["name"];

            string requestBody = new StreamReader(req.Body).ReadToEnd();
            dynamic data = JsonConvert.DeserializeObject(requestBody);
            name = name ?? data?.name;

            document = new { SSourceSystem = "jongelSystem",
                             id = Guid.NewGuid(),
                             SSourceSystemVersion = "1.1",
                             STransactionId = "12345"};

            log.LogInformation($"C# Queue trigger function inserted one row");
            log.LogInformation($"Description={req.Body}");

            return name != null
                ? (ActionResult)new OkObjectResult($"Hello, {name}")
                : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
        }
    }

    public class NWCloudOrder
    {
        public string Id { get; set; }
        public string SSourceSystem { get; set; }
        public string SSourceSystemVersion { get; set; }
        public string STransactionId { get; set; }
    }
}
---编辑--- 确保我使用了正确的运行时,现在会产生以下错误

[2/9/2018 05:44:15] A ScriptHost error has occurred
[2/9/2018 05:44:15] System.Private.CoreLib: Could not load file or assembly 'Microsoft.AspNetCore.Mvc.Abstractions, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. Could not find or load a specific file. (Exception from HRESULT: 0x80131621). System.Private.CoreLib: Could not load file or assembly 'Microsoft.AspNetCore.Mvc.Abstractions, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
[2/9/2018 05:44:15] Stopping Host

我确实安装了2.2.0-preview1-35029

这是由于在旧函数运行时
2.0.11960.0
中引用了
Microsoft.Azure.WebJobs.Extensions.CosmosDB
的最新版本
3.0.1-beta1/2
Microsoft.NET.Sdk.Functions 1.0.19
Microsoft.Azure.WebJobs.Extensions.CosmosDB 3.0.1-beta2
取决于运行时
2.0.12050.0

使用相关错误信息检查此项,以中断最新运行时的更改
2.0.12050.0

如果您现在不想移动到最新的运行时,请将
Microsoft.Azure.WebJobs.Extensions.CosmosDB
降级为
3.0.0-beta7
,并将
Microsoft.NET.Sdk.Functions
降级为
1.0.14

否则只需确保VS使用最新的函数runtime
2.0.12050.0

  • 在VS菜单->扩展和更新上。查找Azure功能和Web作业工具。确保它>=15.8.5023。(需要先将VS更新为15.8)

  • 删除旧功能核心工具(Cli)文件夹
    %localappdata%\AzureFunctionsTools

  • 重新启动VS并创建新的Azure函数。在“创建”对话框等待VS下载新的Cli和模板,直到我们看到对更新的提示更改就绪

  • 更新

  • 检查Cli输出,恐怕正在使用旧版本2.0.11651.0

    Starting Host (HostId=xxx, InstanceId=xxx, Version=2.0.11651.0, ...)
    
    转到
    %localappdata%\AzureFunctionsTools\Releases
    ,您可能还会看到一个空文件夹
    2.5.1

    由于网络等原因,下载失败。再次重复上述步骤。如果无法工作,请尝试手动下载Cli。接近或领先

    1) 。打开
    %localappdata%\AzureFunctionsTools\feed.json
    查找v2的最新下载url

    e、 g.cli:

    2) 。将解压后的文件夹重命名为
    cli
    ,将其置于
    2.5.1

    3) 。将
    cli
    文件夹中的
    templates
    文件夹移动到
    2.5.1

    4) 。在
    2.5.1
    下创建manifest.json(更改用户名)

  • 函数SDK参考了Microsoft.AspNetCore.Mvc.Abstractions 2.1.0的设计。删除
    2.2.0-preview1-35029
    ,否则执行时可能会出错

    Microsoft.Azure.WebJobs.Host: Exception binding parameter 'req'. System.Private.CoreLib: Cannot create an abstract class.
    

  • 这是由于在旧函数运行时中引用了最新版本
    3.0.1-beta1/2
    Microsoft.Azure.WebJobs.Extensions.CosmosDB
    Microsoft.NET.Sdk.Functions 1.0.19
    Microsoft.Azure.WebJobs.Extensions.CosmosDB 3.0.1-beta2
    取决于运行时
    2.0.12050.0

    使用相关错误信息检查此项,以中断最新运行时的更改
    2.0.12050.0

    如果您现在不想移动到最新的运行时,请将
    Microsoft.Azure.WebJobs.Extensions.CosmosDB
    降级为
    3.0.0-beta7
    ,并将
    Microsoft.NET.Sdk.Functions
    降级为
    1.0.14

    否则只需确保VS使用最新的函数runtime
    2.0.12050.0

  • 在VS菜单->扩展和更新上。查找Azure功能和Web作业工具。确保它>=15.8.5023。(需要先将VS更新为15.8)

  • 删除旧功能核心工具(Cli)文件夹
    %localappdata%\AzureFunctionsTools

  • 重新启动VS并创建新的Azure函数。在“创建”对话框等待VS下载新的Cli和模板,直到我们看到对更新的提示更改就绪

  • 更新

  • 检查Cli输出,恐怕正在使用旧版本2.0.11651.0

    Starting Host (HostId=xxx, InstanceId=xxx, Version=2.0.11651.0, ...)
    
    转到
    %localappdata%\AzureFunctionsTools\Releases
    ,您可能还会看到一个空文件夹
    2.5.1

    由于网络等原因,下载失败。再次重复上述步骤。如果无法工作,请尝试手动下载Cli。接近或领先

    1) 。打开
    %localappdata%\AzureFunctionsTools\feed.json
    查找v2的最新下载url

    e、 g.cli:

    2) 。将解压后的文件夹重命名为
    cli
    ,将其置于
    2.5.1

    3) 。将
    cli
    文件夹中的
    templates
    文件夹移动到
    2.5.1

    4) 。在
    2.5.1
    下创建manifest.json(更改用户名)

  • 函数SDK参考了Microsoft.AspNetCore.Mvc.Abstractions 2.1.0的设计。删除
    2.2.0-preview1-35029
    ,否则执行时可能会出错

    Microsoft.Azure.WebJobs.Host: Exception binding parameter 'req'. System.Private.CoreLib: Cannot create an abstract class.
    

  • 请编辑您的问题以包含Azure功能的详细信息。没有代码,只有一些错误日志语句,很难猜测会发生什么。另外,您将其标记为azure cosmosdb-这是否相关?请在编辑时澄清。按要求澄清请编辑您的问题以包括Azure功能的详细信息。没有代码,只有一些错误日志语句,很难猜测会发生什么。另外,您将其标记为azure cosmosdb-这是否相关?请在编辑时澄清。按要求澄清这会产生一个单独的错误,我编辑我的问题是为了添加当前的问题,非常有趣,需要注意的是,没有VpN,模板无法在中国下载,这就是我更新的原因failed@MattDouhan是的,这是一个持续的痛苦,我无法下载它有时甚至与VPN。你能接受我的答案来结束这个问题吗?这会产生一个单独的错误,我已经编辑了我的问题来添加当前的问题,就像cha一样