【问题标题】:Error - Access is denied - deployment to Azure App Services错误 - 访问被拒绝 - 部署到 Azure 应用服务
【发布时间】:2020-10-07 06:15:13
【问题描述】:

我们通过 KUDU 脚本在 Azure 中使用自动部署过程,到今天我们在 Azure 部署中心看到奇怪的错误:

命令 dotnet publish(以及“dotnet build”)返回:

MSBUILD : error MSB1025: An internal failure occurred while running MSBuild.
Unhandled exception. System.ComponentModel.Win32Exception (5): Access is denied.
System.ComponentModel.Win32Exception (5): Access is denied.
   at System.Diagnostics.Process.set_PriorityClassCore(ProcessPriorityClass value)
   at System.Diagnostics.Process.set_PriorityClass(ProcessPriorityClass value)
   at Microsoft.Build.CommandLine.MSBuildApp.Execute(String[] commandLine)
   at Microsoft.Build.CommandLine.MSBuildApp.Main(String[] args)
   at System.Diagnostics.Process.set_PriorityClassCore(ProcessPriorityClass value)
   at System.Diagnostics.Process.set_PriorityClass(ProcessPriorityClass value)
   at Microsoft.Build.CommandLine.MSBuildApp.Execute(String[] commandLine)
Failed exitCode=-532462766, command=dotnet publish "D:\home\site\repository\
...

详情:

  • KUDU 脚本有自动部署过程
  • app是.NET Core应用,.csproj有目标框架:netcoreapp2.2

问题可能在 Azure 方面,因为我们没有对项目进行任何更大的更改。 有没有人相同/类似的问题?

【问题讨论】:

  • 感谢您在这里的输入,我遇到了同样的情况,您是否获得任何有关此问题的适当文档,如果是,请帮助我们摆脱这种情况。

标签: azure asp.net-core deployment azure-web-app-service kudu


【解决方案1】:

我们遇到了同样的问题,经过调查我们发现:

  • Azure 应用了新的 'dotnet' 版本 3.1.301,并且此版本的 SDK 引发了该错误(您可以通过命令 'dotnet --version' 检查您的版本)
  • 通过命令 'dotnet --list-sdks' 可以查看所有已安装的 SDK
  • 然后我们简单地使用以前的版本(在我们的例子中是 v3.1.202)
  • 如何判断 dotnet sdk 的确切版本的最简单方法是通过 global.json

示例: 全局.json

{
  "sdk": {
    "version": "3.1.202"
  }
}

并且文件必须在'工作目录'中,并且KUDU脚本在这里有工作目录D:\home\site\repository

当您的部署在以前版本的 dotnet SDK 上正常时,这肯定会有所帮助。

【讨论】:

  • 作为记录,在较旧的 SDK 版本中添加 global.json 还修复了在 Kudu 上构建失败并出现相同错误的 .NET Framework。
  • 知道是什么导致了实际错误吗?即:我们是否必须更新我们的应用程序或者这纯粹是一个框架错误(希望在下一个版本中解决)
【解决方案2】:

这个问题也可能在其他情况下发生,因为 sdk 是以管理员身份安装的(例如,如果使用 sudo 安装)。 在这种情况下,卸载 sdk 并将其安装为非管理员用户可以帮助解决问题。您可以使用this script 为非管理员用户安装。

例如(在 ubuntu 20.04 上测试):

$ wget https://dot.net/v1/dotnet-install.sh
$ chmod +x dotnet-install.sh
$ ./dotnet-install.sh -c Current

添加到路径并验证:

$ echo "export PATH=$HOME/.dotnet:$PATH" >> ~/.bashrc
$ exec bash
$ dotnet --version
3.1.402

注意:执行此操作后,您可能会收到错误错误:无法在 '/tmp/NuGetScratch/lock 上获得锁定文件访问权限,然后您可以将其删除,一切顺利。

sudo rm -r /tmp/NuGet*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-23
    • 2019-05-30
    • 2021-01-18
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多