7

我将我的 Asp.net 核心 Blazor WebAssembly 应用程序更新为 .net 6。一切都很好,但是从 github 操作部署不起作用并引发此错误:

...
Copying file: 'Microsoft.AspNetCore.ApiAuthorization.IdentityServer.dll'
Copying file: 'Microsoft.AspNetCore.Authentication.JwtBearer.dll'
Omitting next output lines...
Error: EISDIR: illegal operation on a directory, open '/home/site/wwwroot/wwwroot/Identity/lib/bootstrap/LICENSE'
An error has occurred during web site deployment.
Kudu Sync failed
\n/opt/Kudu/Scripts/starter.sh "/home/site/deployments/tools/deploy.sh"
Error: Failed to deploy web package to App Service.
Error: Deployment Failed with Error: Package deployment using ZIP Deploy failed. Refer logs for more details.

这里可能有什么问题?

  • 应用程序在本地工作
  • 我在配置中将 azure 应用程序更新为 .net6
  • 我试图重新启动应用程序
  • 该应用程序位于美国中部地区

编辑/解决方案

以前许可证文件的路径是:/home/site/wwwroot/wwwroot/Identity/lib/bootstrap/LICENSE/LICENSE新文件没有LICENSE目录。因此,当新版本的应用程序到来时,它会尝试更新 LICENSE 文件,该文件实际上是一个目录。删除有LICENSE/LICENSE帮助。

4

2 回答 2

3

我最终也删除了 /home/site/wwwroot/ 的内容来解决这个问题。我还需要将站点配置中的配置更新为 .NET 6,并在我的站点开始工作之前重新部署。

于 2021-11-27T15:34:58.930 回答
2
  • 在 Linux 上,任何运行的 bash 部署脚本都必须具有 Unix 行尾 (LF) 而不是 Windows 行尾 (CRLF),这一点很重要。

  • Kuduscript 将生成带有适合平台的行尾的脚本,但是如果修改了这些脚本,或者如果您提供了自己的 自定义部署脚本,请务必确保您的编辑器不会更改行尾。

  • 如果您的部署脚本出现问题,您可以随时使用 Kudu 控制台删除 /home/site/deployments/tools 的内容。

  • 这是 Kudu 缓存 kuduscript 生成的部署脚本的目录。在下一次部署时,将重新生成脚本。

  • 您当前看到的错误是运行 node/npm 进行部署的 Kudu 问题。

  • 您目前看到的最简单和最快的解决方案是在您的 package.json中指定engines.node 。

错误:EISDIR:对目录的非法操作,打开“/home/site/wwwroot/wwwroot/Identity/lib/bootstrap/LICENSE”

EISDIR 代表“错误,是目录”。这意味着 NPM 正在尝试对文件执行某些操作,但它是一个 目录。在您的情况下,NPM 正在尝试“读取”作为目录的文件。由于无法完成操作,因此会引发错误。

这里要确保的三件事

  1. 确保文件存在。如果没有,您需要创建它。(如果 NPM 依赖于文件中的任何特定信息,您将需要在其中拥有该信息)。
  2. 确保它实际上是一个文件而不是一个目录。
  3. 它具有正确的权限。您可以使用“sudo chmod 777 FILE_NAME”将文件更改为拥有所有权限。

注意:您正在为该文件上的每个人授予读取、写入和执行权限。

于 2021-11-15T05:26:00.000 回答