尝试从Visual Studio发布Azure函数时出错

时间:2019-12-06 02:10:28

标签: visual-studio azure azure-functions

当我尝试使用Visual Studio发布函数时,出现以下错误消息,您知道如何解决此问题吗?

  

System.AggregateException:发生一个或多个错误。 ->   System.Exception:发布遇到错误。我们无法   确定错误原因。检查输出日志以了解更多   细节。 ---内部异常堆栈跟踪的结尾---   System.Threading.Tasks.Task.ThrowIfExceptional(Boolean   includeTaskCanceledExceptions)   System.Threading.Tasks.Task.Wait(Int32毫秒超时,   的CancellationToken cancelToken()   Microsoft.Publish.Framework.Model.DefaultPublishSteps。<> c__DisplayClass26_0.b__2()   在System.Threading.Tasks.Task`1.InnerInvoke()在   System.Threading.Tasks.Task.Execute()   ---从上一个引发异常的位置开始的堆栈跟踪-   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   Microsoft.Publish.Framework.Model.DefaultPublishSteps.d__23.MoveNext()   ---从上一个引发异常的位置开始的堆栈跟踪-   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   Microsoft.Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext()   --->(内部异常#0)System.Exception:发布遇到错误。我们无法确定错误的原因。检查   输出日志以获取更多详细信息。 <---

     

System.Exception:发布遇到错误。我们无法   确定错误原因。检查输出日志以了解更多   细节。

     

==================

12 个答案:

答案 0 :(得分:4)

您可以尝试this

  

完全从Azure Functions中删除WEBSITE_RUN_FROM_PACKAGE设置   来自Azure门户的应用程序设置。

答案 1 :(得分:3)

这是Visual Studio超时问题,这意味着您的代码和其他一些设置不是解决问题的关键。发生此错误的原因是Visual设置了发布的超时限制。 (文件太大或互联网速度不稳定)

如果您的部署项目不太大,则可以等到网络速度稳定后再尝试运行它。当然,您也可以尝试其他部署方法来避免此问题,例如zip deploy

答案 2 :(得分:2)

我遇到了同样的奇怪问题-这是由于我的代码中的错误引起的-

我的代码中包含for (i in 1:5) { message('\r', i, appendLF = FALSE) } 语句,因此可以在计算机上进行调试,但是发布(使用Release配置文件)失败。

单击“输出”选项卡,您应该看到真正的问题。

答案 3 :(得分:1)

以上都不适合我。所以我只是重新下载了发布配置文件并将其导入到 VS 中,并且它起作用了。

很奇怪,但以防万一以上都不适合您。可能值得一试。

答案 4 :(得分:0)

  

没有在像GitHub这样的播放表单上共享您的项目,我们真的很难提供具体建议,变量太多,NuGET包和引用的组合如此之多,以至于您的项目可能会发生冲突,将导致此错误。

     

尤其是对于v2函数,我已经多次遇到此问题或类似问题。 “功能”的最大因素之一是v1和v2之间的竞争概念。

当您使用Visual Studio发布向导在Azure中创建目标资源时,如果您为此付出了一段时间的努力,那么它往往会获得更大的成功,我建议您按照此过程进行操作,以作为概念验证(如果没有)其他:

  

此建议在VS2017和2019中同样有效

  1. 在相同的解决方案中,在Visual Studio中创建一个新的Function Project。
    • 复制原始函数的名称
  2. 将函数发布到 NEW Azure资源,使用发布向导创建此资源。
  3. 如果发布成功:
    • 将您的原始项目代码移至新项目中
    • 请密切注意要带来的nuget软件包的版本,它们及其依赖项必须与v2兼容
  4. 如果发布成功不成功
    • 确保将Visual Studio升级到最新版本
    • 确保您的Azure工具也已升级到最新版本
  

作为一般经验法则,使用Azure Functions可获得一般成功:

     
      
  1. 将v1用于.Net Framework项目,或者如果您的参考项目或NuGET包的 ANY 具有.Net Fx依赖性。 (因此是.Net 4 + ...或不是 .Net Core 的任何东西。)      
        

    即使那些依赖项针对多个项目,使用 Function 部署也会失败,因为在部署过程中评估NuGET依赖项时,它无法正确检测正确的平台。

      
  2.   
  3. 仅将v2 用于 .Net Core 项目,请确保您的引用也仅是 .Net core
  4.   

以增量方式编译和发布代码,还可以使用AzureDevOps或GitHub或其他源代码存储库来经常通过Functions检入代码。在Functions项目的早期,我们经常引入多重引用和NuGET程序包,它们似乎在本地运行,但在我们部署时不起作用。

  • 使用源代码存储库可以很容易地在安装新软件包之前提交更改,并在安装软件包导致无法部署的代码时回滚。
  • 这似乎很混乱,但是由于NuGet版本控制,安装包之前的状态不像卸载该包那样简单,它可能很容易升级了其他包,在这种变化的Azure环境中,许多包作者选择了在.Net Framework和.Net Core之间升级他们的资源,但并非总是做得很好,或者有时保留了一些.Net框架元素,这些元素将导致Azure Functions中的冲突。

一些有趣的讨论可能会有所帮助:

答案 5 :(得分:0)

解决方案是更新到最新的SDK。

答案 6 :(得分:0)

默认超时为100秒。因此,发布会在100秒后失败。 上传blob时,我自己的代码中也遇到了同样的问题,这就是我将其修复为5分钟的方法。因此,Visual Studio可以使用相同的代码对其进行修复。

_client.Timeout = TimeSpan.FromMinutes(5);
CancellationTokenSource source = new CancellationTokenSource(TimeSpan.FromMinutes(5));
CancellationToken token = source.Token;
HttpResponseMessage responseMessage = await _client.PostAsync(url, content, token);

答案 7 :(得分:0)

我找到了一种解决方法,因为这些东西都不适合我。有点奇怪,请多多包涵。

  1. 将函数发布到 azure
  2. 等待失败 enter image description here
  3. 转到 Azure 门户/所有资源
  4. 查找失败的已发布函数应用
  5. 在函数内点击“函数”..

enter image description here

  1. 点击刷新
  2. 再次发布.. 这次成功了。

就是这样..

答案 8 :(得分:0)

我安装了最新的 .NET Core (5.0) 并将我的项目升级到面向 .NET Core 5.0。当我尝试发布我的项目时,我遇到了这个错误。我忘记在发布窗口中将“目标框架”更改为“net5.0”。

Properties: Target Framework

Publish: Target Framework

答案 9 :(得分:0)

删除包部署有时会像@Sajeetharan 建议的那样工作,但并非总是如此。

您应该首先尝试在门户上停止主机。然后从 VS 发布,这对我有用。最后重启主机。

不知道为什么现在需要手动重启,可能是一个 Durable Task 正在运行,阻止了自动重启。

答案 10 :(得分:0)

在大多数情况下,删除 WEBSITE_RUN_FROM_PACKAGE 对我有用。 但有时,它不起作用.. 这里有一些事情,我在发布之前要确保。

  1. 不应打开 Azure CLI 窗口。
  2. 转到文件--> 帐户设置。确保您已登录。
  3. 在管理员模式下使用 Visual Studio。
  4. 删除发布配置文件并重新创建。

答案 11 :(得分:0)

我在服务依赖项列表中使用了带有黄色标志的 Application Insights。由于我不使用此工具,我只是将其删除并修复了我的发布。