无法从 Visual Studio 2019 发布到 Azure Functions

Posted

技术标签:

【中文标题】无法从 Visual Studio 2019 发布到 Azure Functions【英文标题】:Cannot publish to Azure Functions from Visual Studio 2019 【发布时间】:2019-09-19 07:51:09 【问题描述】:

以前我可以从 Visual Studio 发布到 Azure Functions,但最近我总是收到一条错误消息,说发布遇到错误。它指向一个日志文件,其内容如下:

    System.AggregateException: One or more errors occurred. ---> System.Exception: Publishing failed.
       --- End of inner exception stack trace ---
       at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
       at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
       at Microsoft.Publish.Framework.Model.DefaultPublishSteps.<>c__DisplayClass26_0.<IsBuildCompletedSuccessfully>b__2()
       at System.Threading.Tasks.Task`1.InnerInvoke()
       at System.Threading.Tasks.Task.Execute()
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at Microsoft.Publish.Framework.Model.DefaultPublishSteps.<DefaultCorePublishStep>d__23.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at Microsoft.Publish.Framework.ViewModel.ProfileSelectorViewModel.<RunPublishTaskAsync>d__205.MoveNext()
    (Inner Exception #0) System.Exception: Publishing failed.

System.Exception: Publishing failed.

我尝试了以下方法:

在 Azure 中重置发布配置文件,在 Visual Studio 中创建新配置文件并再次尝试发布。还是一样的错误。 在 Azure 中删除 Function App 并重新创建它。在 Visual Studio 中获取新的发布配置文件并再次尝试发布。还是一样的错误。 将 Visual Studio 2019 升级到最新版本 (16.2.5) 并再次尝试发布。还是一样的错误。

请注意,我在同一解决方案中有一个 Azure 网站,我仍然可以将其发布到 Azure。

【问题讨论】:

Yoo 这也发生在我身上,但是该功能已发布,并且可以与您所做的更改一起正常工作。这只是一个视觉工作室错误 【参考方案1】:

我对 Azure 函数非常陌生,但今天我遇到了类似的问题(可能是同一个问题),我找到了一种解决方法,所以我希望它也对你有用。 Visual Studio 通过将 zip 文件发送(上传)到 azure 来发布函数。不幸的是,似乎VS设置了一个超时来发送这个文件,所以如果它太大或者你的上传连接太慢,发布失败,因为它没有在超时之前完成:(

还有其他方法可以在没有VS的情况下发送zip,如果您想了解详细信息,请参阅下面的链接,否则TL;DR只需按照我在链接下方已经测试过的简单说明进行操作

https://docs.microsoft.com/en-us/azure/azure-functions/deployment-zip-push

我使用了 curl 命令,它对我有用,没有超时。您也可以尝试 powershell 或 AZ cli,但 curl 非常简单,请注意获取正确的 uid/pwd,在我的情况下,uid 是 "$"+"project_name" 这是一个例子,用你的替换参数

curl -X POST -u your_username:your_password --data-binary @"your_zip_path" https://your_project_name.scm.azurewebsites.net/api/zipdeploy

耐心等待上传结束,没有进度条,查看网络活动,如果正在发送数据,则上传正在进行中。您可以在可以从 azure 下载的发布文件中找到所有参数,它们也在 VS 中。对于 zip 文件,您可以使用 VS 无法部署的那个,Vs 不会删除它,在我的情况下,它位于 obj\Release\netcoreapp2.1\PubTmp 的 proj 目录下

P.S 我已将 WEBSITE_RUN_FROM_PACKAGE 设置为 1,此设置被许多 ms doc 推荐为 1,因此请小心更改为 0,您可能会产生副作用。

【讨论】:

谢谢你。这可能与我遇到的问题相同,因为问题是零星的,这表明它与连接速度和超时有关 @SteveFarnaby,不客气。可能你正处于边缘。添加更多增加 zip 大小的代码/nuget,问题将是永久性的。如果您想要快速修复,您可以使用更快的连接。我临时。换到我的 4G 热点(48Mbits 上传),VS 发布很快就完成了,没有错误:) 而 ADSL 总是出错。您还可以从具有超快速连接(Azure 到 Azure)的 azure VM(与函数应用位于同一区域)发布。保重 ;)【参考方案2】:

如果将 WEBSITE_RUN_FROM_PACKAGE 设置为 1,则可能会导致 Visual Studio 的部署出现问题:

打开 Azure 门户并检查是否是这种情况,如果是,则将其设置为 0。它应该可以工作。

这里是支持link

希望它有帮助,如果没有,请分享代码库,我会尝试在我的结尾进行复制。

【讨论】:

我已经尝试了上述方法,但仍然遇到同样的发布失败。 还有其他人对此有答案吗?我仍然有类似的问题。【参考方案3】:

对我来说,它未能部署到 V3,但适用于 V2

【讨论】:

以上是关于无法从 Visual Studio 2019 发布到 Azure Functions的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2019 无法识别从 GitHub 提取的新文件

Visual Studio 2019 IntelliSense 无法识别更改的值

无法从 Visual Studio 2019 16.6.2 调试 Blazor 托管的 webassembly 3.2.0

从 Visual Studio 2019 Xamarin.iOS 连接到 Mac 的代理问题

无法在 Visual Studio 2019 中使用诊断工具

无法在 Visual Studio 2019 中打开 Service Fabric 项目