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

时间:2017-06-20 03:26:25

标签: azure visual-studio-2017 azure-webjobs azure-functions

我在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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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>

希望添加可解决此问题。让我知道这是否有帮助:)

答案 2 :(得分:0)

我遇到了同样的问题,

我删除了bin和obj文件夹并重建了项目 ,然后它可以完美运行。