以前,我能够从Visual Studio发布到Azure函数,但是最近我总是收到一条错误消息,指出发布遇到错误。它将指向如下内容的日志文件:
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网站,但仍可以将其发布到Azure。
答案 0 :(得分:0)
如果 WEBSITE_RUN_FROM_PACKAGE
设置为1,则可能会导致Visual Studio部署问题:
打开Azure门户并检查是否存在这种情况,如果是,则将其设置为0。应该可以。
以下是辅助link
希望这会有所帮助,如果没有帮助,请分享代码库,我会在最后尝试复制。
答案 1 :(得分:0)
我对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,但是卷曲确实很容易,只要小心获取正确的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,许多文档建议将此设置设置为1,因此请小心更改为0,可能会有副作用。