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

VS中的Azure函数本地开发找不到函数

松秦斩
2023-03-14

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

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

Azure函数和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"
    }
}

共有2个答案

赫连俊雄
2023-03-14

我遇到了同样的问题,但我已将Microsoft.NET.Sdk.Functions从版本3.0.11降级到3.0.10,然后启动一个程序,一旦程序成功运行,它就在控制台应用程序中显示了我的所有功能,我已经升级到以前的功能3.0.11它工作了。

冯嘉荣
2023-03-14

< code>function.json文件是在VS构建之后生成的。检查它是否在以您的函数命名的文件夹中,在< code > ~ \ bin \ Debug \ net standard 2.0 文件夹下。

如果你没有看到像<code>Function1),你可能遇到了我同事遇到的同样问题。

没有找到溃败的原因,VS只是无法在我同事的计算机上生成formress.json,但就我而言,事情工作正常(VS和Azure函数和Web Jobs Tools具有相同的版本)。

我们找到的解决方法是降低< code>Microsoft的等级。NET.Sdk.Functions到< code>1.0.12。

仅供参考,我们还尝试了升级Azure Function和Web作业工具并在C:\User\UserName\. nuget\pack\microsoft.net.sdk.functions\1.0.13中删除Microsoft.NET.Sdk.Functions并再次安装此包。

更新

Microsoft.NET.Sdk.Functions 升级到最新版本的 1.0.14 也适用于我们。

 类似资料:
  • 我正在按照本指南安装 Azure Functions 并创建一个应用:https://learn.microsoft.com/en-us/azure/azure-functions/functions-run-local 当我运行命令时,我应该得到这样的输出: 但是我得到了这个: 翻译:“找不到文件”。 我已经安装了链接中提到的所有内容,但它不起作用。它创建了名为“.vscode”的文件夹,其中包

  • 我有Azure功能,并试图在本地启动,但启动后命令行显示和隐藏不到1秒。我试着在截图上抓住它: 看起来没有正确的启动参数。 my local.settings.json: 我的csproj文件是: 另外,我设置了“可执行文件”在调试属性窗口和完整路径上启动: 因为没有它,azure函数无法在本地启动,出现错误: 我能在哪里检查它?

  • 我正在使用无服务器框架(https://serverless.com/framework/docs/providers/azure/guide/quick-start/) 以创建节点。js基于azure函数。我遵循了《快速入门指南》中所述的程序,但在使用npm start在本地运行时遇到以下问题: 未找到作业函数。请尝试将作业类和方法公开。如果使用的是绑定扩展(例如Azure存储、ServiceB

  • 我有一个功能。Net标准2.0: 根据本文:https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local部分"非HTTP触发函数" “对于HTTP触发器和Webhook以外的所有类型的函数,您都可以通过调用管理终结点在本地测试您的函数。在本地服务器上使用HTTP POST请求调用此终结点会触发该函数。您可以选择

  • 我们正在本地开发该函数,尽管我们可以使用 ConfigurationBuilder()。AddAzureKeyVault() 在启动以检索密钥保管库机密时,我们正在努力使队列触发器从 Key Vault 获取连接字符串。如下所示,连接当前是从 local.settings.json 中存在的 AzureWebJobsStorage 密钥检索的: local.settings.json

  • 有一个Azure函数,当HTML文件被放入Azure blob存储时会被触发。该函数打开HTML文件,并将其转换为JSON。有一小部分触发文件(不到1%)会导致以下异常: Microsoft.WindowsAzure.Storage.StorageException blob的放置触发了第二个函数,它改变了文件的内容类型,但是我不确定这是否会影响第一个函数打开文件的能力。 怎样做才能让Azure函