c# - VS中Azure函数本地开发找不到函数

标签 c# visual-studio azure azure-web-app-service azure-functions

我目前正在 Visual Studio 中使用 Microsoft 的 Azure 函数开发函数应用。我能够在 azure 上部署和发布函数,并且它似乎可以运行,但每当我尝试本地运行函数时,托管环境无法找到任何 “工作”。。我在下面附上了一张图片。

必须指出的是,我在某些时候能够在本地部署,但我相信经过一些更新后,我无法运行我的功能

Azure Function 和 Web 作业工具的当前版本:15.0.40424.0

我在创建新项目时尝试使用 Azure Functions V1 (.NET Frameworks) 和 Azure Functions V2 (.NET Core),但结果不成功。我还尝试创建一个新的干净项目,重新安装 VS,并重置 Windows,以防出现任何奇怪的设置。

我是否遗漏了一些东西?我是否明确需要在某处声明我的函数,以便托管环境可以找到它们?

托管环境未找到任何功能:

[6/20/2018 7:24:37 AM] Host configuration file read:
[6/20/2018 7:24:37 AM] {}
[6/20/2018 7:24:37 AM] Starting Host (HostId=2017noy-1005193785, 
 InstanceId=c8332a19-7eb3-4446-9b3e-4307f20a57bc, Version=2.0.11651.0, 
 ProcessId=15184, AppDomainId=1, Debug=False, ConsecutiveErrors=0, 
 StartupCount=1, FunctionsExtensionVersion=)

[6/20/2018 7:24:38 AM] Generating 0 job function(s)
[6/20/2018 7:24:38 AM] No job functions found. Try making your job classes 
 and methods public. If you're using binding extensions (e.g. ServiceBus, 
 Timers, etc.) make sure you've called the registration method for the 
 extension(s) in your startup code (e.g. config.UseServiceBus(), 
 config.UseTimers(), etc.).

模板空 HTTPTrigger 函数 - Function1.cs:

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;

namespace FunctionApp1
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static IActionResult 
        Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = 
            null)]HttpRequest req, TraceWriter log)
        {
            log.Info("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;

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

CSPROJ 文件

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.13" 
/>
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

local.settings.json

{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
    }
}

最佳答案

function.json 文件是在 VS 构建后生成的。检查它是否位于 ~\bin\Debug\netstandard2.0 文件夹下以您的函数命名的文件夹中。

enter image description here

如果您没有看到像 Function1 这样的文件夹(其中包含 function.json),您可能遇到了与我同事相同的问题。

没有找到路由原因,VS 只是无法在同事的计算机上生成 function.json,但在我这边一切正常(VS 和 Azure Function 和 Web Jobs Tools 具有相同的功能)版本)。

我们找到的解决方法是将 Microsoft.NET.Sdk.Functions 降级到 1.0.12

仅供您引用,我们还尝试升级 Azure Function 和 Web Jobs Tools 并删除 C:\Users 中的 Microsoft.NET.Sdk.Functions\UserName\.nuget\packages\microsoft.net.sdk.functions\1.0.13 并再次安装此包。

更新

Microsoft.NET.Sdk.Functions 升级到最新版本的 1.0.14 对我们来说也有效。

关于c# - VS中Azure函数本地开发找不到函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50876637/

相关文章:

azure - 为 Azure 数据库禁用查询编辑器中的设计

c# - 通过 Office 加载项更改键盘快捷方式?

c# - 如何隐藏快速访问工具栏中的按钮?

asp.net - Crystal Report直接保存为PDF,而不是查看

c++ - 与 Windows 窗体应用程序一起使用时出现 opencv 错误

c# - 在 VS 2017 中插入 Intellisense 的简化 Using 语句

c# - 在 Azure 中使用子域名单独的 Web 应用程序

c# - 如何使用新的 Azure 存储 SDK v12 打开新 Blob 的可写流?

c# - .Net 3.5 日志记录

c# - 如何在应用程序运行时更改图片框的大小