Azure函数返回错误:找不到作业函数。尝试公开您的工作类和方法

问题描述 投票:1回答:2

我在Visual Studio 2017中创建了一个Azure Function应用程序,可以使用Visual Studio发布功能将其发布到Azure而没有任何问题(右键单击项目,然后选择发布)。

由于从Visual Studio的开发人员实例部署不是理想的持续集成策略,我创建了TeamCity和Octopus的部署管道,其中TeamCity构建Azure功能应用程序,Octopus使用WAWSDeploy应用程序将Azure功能文件部署到Azure。部署工作正常,当我通过WAWSDeploy部署时查看Azure功能文件时,文件与我从Visual Studio发布Azure功能应用程序时的文件完全相同。

但是当我从WAWSDeploy部署(通过查看Azure功能应用程序日志)时,我得到错误No job functions found. Try making your job classes and methods public.Invalid script file name configuration. The 'scriptFile' property is set to a file that does not exist.。这看起来似乎不是WAWSDeploy问题,但看起来Visual Studio发布功能正在做我想念的事情。有任何想法吗?

Azure功能文件的文件夹结构:

enter image description here

azure visual-studio-2017 azure-webjobs azure-functions
2个回答
1
投票

问题是由scriptFile文件中的function.json值不正确引起的。当我从Visual Studio发布Azure功能时,此值设置正确但是当我构建Azure功能并手动将文件推送到Azure功能应用程序时,scriptFile值缺少我的函数dll文件路径中的bin文件夹。在我的构建过程中,我现在破解scriptFile值以正确设置它。


0
投票

我遇到了类似的问题,最终找到了根本原因。你可能已经解决了这个问题,但是把它放在这里面对这个问题的其他人。

确保在功能应用程序的.csproj中包含以下元素块

<None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

当我从项目中排除host.json然后再次创建一个(在确认需要肯定之后)时,我遇到了这个问题。

有效的.csproj应该看起来像这样

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
  </PropertyGroup>

  ...
  ...
  ...

  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

希望添加它可以解决这个问题。如果这有帮助,请告诉我:)

© www.soinside.com 2019 - 2024. All rights reserved.