以前我能够从 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。
最佳答案
我是 Azure 函数的新手,但今天我遇到了类似的问题(可能是同一个问题),我找到了解决方法,所以我希望它也对你有用。 Visual Studio 通过将 zip 文件发送(上传)到 Azure 来发布函数。不幸的是,VS 似乎设置了一个超时来发送这个文件,所以如果它太大或者你的连接在上传时太慢,发布就会失败,因为它没有在超时之前完成:(
还有其他方法可以在没有 VS 的情况下发送 zip,如果您想了解详细信息,请参阅下面的链接,否则 TL;DR 只需按照我在链接下方测试过的简单说明进行操作即可
https://learn.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 文档建议将此设置设置为 1,因此请小心更改为 0,您可能会产生副作用。
关于visual-studio - 无法从 Visual Studio 2019 发布到 Azure Functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58006236/