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

.net5上的函数:未找到作业函数。试着公开你的作业类和方法

越雨泽
2023-03-14

我正在探索在.net5上运行函数应用程序。这是我到目前为止所做的。

下面是新的< code>Program类,它取代了< code>Startup类:

public static class Program
{
    private static Task Main(string[] args)
    {
        IHost host = new HostBuilder()
            .ConfigureAppConfiguration(configurationBuilder => { configurationBuilder.AddCommandLine(args); })
            .ConfigureFunctionsWorkerDefaults()
            .ConfigureServices(services =>
            {
                // Add Logging
                services.AddLogging();

                // Add HttpClient
                services.AddHttpClient();

                // Add Custom Services
            })
            .Build();

        return host.RunAsync();
    }
}

我还有一个非常简单的HTTP触发函数:

public sealed class StorageAccountsFunction
{
    private readonly ILogger<StorageAccountsFunction> m_logger;

    public StorageAccountsFunction(ILogger<StorageAccountsFunction> logger)
    {
        m_logger = logger;
    }

    [Function("v1-get-storage-accounts")]
    public HttpResponseData GetAsync
    (
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "api/v1/storage-accounts")] 
        HttpRequestData httpRequestData, 
        FunctionContext context
    )
    {
        return httpRequestData.CreateResponse(System.Net.HttpStatusCode.OK);
    }
}

我已经修改了我的 local.settings.json,以指示函数必须在隔离模式下运行:

{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
    }
}

我使用以下参数启动函数

func host start --pause-on-error --verbose --dotnet-isolated-debug

问题

当我启动应用程序时,我收到以下警告消息:

[2021-07-08T13:13:54.813Z] Loading functions metadata
[2021-07-08T13:13:54.814Z] Reading functions metadata
[2021-07-08T13:13:54.815Z] 0 functions found
[2021-07-08T13:13:54.841Z] 0 functions loaded
[2021-07-08T13:13:54.868Z] Generating 0 job function(s)
[2021-07-08T13:13:54.898Z] No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).

我相信我在上运行函数时遵循了说明。net5处于隔离进程中。我错过了什么?

更新

以下是版本信息:

Core Tools Version:       3.0.3568 Commit hash: e30a0ede85fd498199c28ad699ab2548593f759b  (64-bit)
Function Runtime Version: 3.0.15828.0

共有1个答案

钱季
2023-03-14

我不能100%确定罪魁祸首是什么,但我现在让它工作了。我已经更新了。Net到最新的net5SDK(5.0.301)。

然后我意识到我的<code>local.settings。json文件缺少一些信息,我认为最重要的是FUNCTIONS_EXTENSION_VERSION字段:

{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
        "FUNCTIONS_EXTENSION_VERSION": "~3"
    },
    "Host": {
        "LocalHttpPort": 7072,
        "CORS": "*"
    }
}

下面是输出:

[2021-07-10T12:53:30.478Z] EnvironmentVariable FUNCTIONS_WORKER_RUNTIME: dotnet-isolated
[2021-07-10T12:53:30.478Z] EnvironmentVariable FUNCTIONS_WORKER_RUNTIME_VERSION: 
[2021-07-10T12:53:30.478Z] Added WorkerConfig for language: dotnet-isolated
[2021-07-10T12:53:30.479Z] Reading functions metadata
[2021-07-10T12:53:30.480Z] 0 functions found
[2021-07-10T12:53:30.489Z] 1 functions loaded
[2021-07-10T12:53:30.506Z] Adding Function descriptor provider for language dotnet-isolated.
[2021-07-10T12:53:30.508Z] Creating function descriptors.
[2021-07-10T12:53:30.563Z] Function descriptors created.
[2021-07-10T12:53:30.572Z] Generating 1 job function(s)

更新

我最终遇到了同样的问题,需要我添加Microsoft.Azure.Functions.Worker.Sdk包并更新. csproj文件以包含以下行:

<OutputType>Exe</OutputType>
    
 类似资料:
  • 我已经创建了一个.Net 5 Azure函数应用程序项目,并使用程序.cs文件遵循隔离过程,并且它工作正常。现在我想将框架版本从dotnet 5.0更改/升级到6.0,因此更改了项目属性页中的版本,并更改了csproj文件中的版本。并将属性也从 Function 更改为 FunctionName,但它在运行时在 cmd 中显示以下错误。 添加它显示以下进程窗口超过 1 小时,当我运行我的解决方案。

  • 我正在运行本地m/c代码。 在上面的代码中,我试图在条目上触发Topic的订阅。 但当我运行代码时,它给了我一个错误 找不到函数。尝试公开作业类和方法 我在public Function类中尝试了相同的方法,但不起作用。 但是当我将ServiceBusTrigger更改为QueueTrigger时,它起作用了。 我已经正确设置了下面的配置。 我哪里说错了?

  • 我很感激有几个这样的问题,但我很确定我已经经历了一切,已经到了“到底是什么”的地步。 我在Azure上推出了一个v3函数,但是没有成功地将这个函数发布到.....功能。我担心Azure CLI任务会破坏一些东西。 我函数的启动是: 以及其中的函数: 我相当确定我已经安装了所有的软件包。通过网络浏览到函数似乎是可以的。 Log Analytics 的自定义日志中也不会显示任何内容。不过,该表确实已创

  • 我已经在Visual Studio 2017中创建了一个Azure Function应用程序,并且可以使用Visual Studio发布功能毫无问题地将其发布到Azure(右键单击项目,然后选择发布)。 由于从Visual Studio的开发人员实例部署不是理想的持续集成策略,我已经与TeamCity和Octopus创建了一个部署管道,其中TeamCiti构建了Azure功能应用程序,Octopu

  • 当我尝试在Linux(Ubuntu 18.04)中构建azure函数时,返回错误。以下是我在从git克隆存储库process.After中遵循的步骤。 在输出返回之后, 下面是关于我的系统的信息,

  • 我使用 .NET 5 创建了一个 Azure 函数版本 3,并通过类的构造函数进行依赖关系注入。请参阅下面的虚拟代码: 在类中添加了范围。 程序文件如下所示: 在文件中有这行代码: 问题是当我想运行 Azure 函数时。我有这个警告: 未找到作业函数。试着公开你的作业类和方法。如果您使用的是绑定扩展(例如Azure存储、ServiceBus、定时器等),请确保您在启动代码中调用了扩展的注册方法(例