ASP.NET Azure 上的核心节点服务 Linux WebApp
ASP.NET Core NodeServices on Azure Linux WebApp
我习惯于在 Windows 上发布 Azure WebApps,但现在我正在尝试将 ASP.NET Core 3(带有 NodeServices)部署到 Linux WebApp,并且我收到了以下错误消息:
InvalidOperationException: Failed to start Node process. To resolve this:.
[1] 确保 Node.js 已安装并且可以在其中一个 PATH 目录中找到。
当前 PATH 环境变量是:/opt/dotnetcore-tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/site/wwwroot
确保 Node 可执行文件位于这些目录之一中,或者更新您的 PATH。
在 Windows WebApps 我有很多其他应用程序,都很好。
在 Kudu 上我输入了 node -v
,输出是 v12.13.0
。
有人可以帮我吗?
非常感谢。
尝试在代码中提及路径,这是 Startup.cs 中配置 NodeServices 的方式:
services.AddNodeServices(options =>
{
options.ProjectPath = "Path\That\Doesnt\Exist";
});
经过长时间的研究和微软工程师的帮助https://github.com/caroe2014这是三个步骤的最终答案:
1) Startup.cs
services.AddNodeServices(options =>
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
options.ProjectPath = Path.GetFullPath("/home/site/wwwroot");
}
}
);
2) 我发现容器中不存在 Node,因此在启动应用程序本身之前需要有一个脚本来安装和启动它。所以我有这个 start1.cs 文件:
#!/bin/bash
apt-get install curl
curl -sL https://deb.nodesource.com/setup_12.x | bash
apt-get install -y nodejs
set -e
export PORT=8080
export ASPNETCORE_URLS=http://*:$PORT
dotnet "Web.Identity.dll"
其中 Web.Identity.dll 是我的应用程序的 dll。
3) 将启动命令设置为 /home/site/wwwroot/start1.sh(在 Azure 门户 - 应用服务配置 - 或 Azure DevOps)。
就这些了。
我习惯于在 Windows 上发布 Azure WebApps,但现在我正在尝试将 ASP.NET Core 3(带有 NodeServices)部署到 Linux WebApp,并且我收到了以下错误消息:
InvalidOperationException: Failed to start Node process. To resolve this:.
[1] 确保 Node.js 已安装并且可以在其中一个 PATH 目录中找到。 当前 PATH 环境变量是:/opt/dotnetcore-tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/site/wwwroot 确保 Node 可执行文件位于这些目录之一中,或者更新您的 PATH。
在 Windows WebApps 我有很多其他应用程序,都很好。
在 Kudu 上我输入了 node -v
,输出是 v12.13.0
。
有人可以帮我吗?
非常感谢。
尝试在代码中提及路径,这是 Startup.cs 中配置 NodeServices 的方式:
services.AddNodeServices(options =>
{
options.ProjectPath = "Path\That\Doesnt\Exist";
});
经过长时间的研究和微软工程师的帮助https://github.com/caroe2014这是三个步骤的最终答案:
1) Startup.cs
services.AddNodeServices(options =>
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
options.ProjectPath = Path.GetFullPath("/home/site/wwwroot");
}
}
);
2) 我发现容器中不存在 Node,因此在启动应用程序本身之前需要有一个脚本来安装和启动它。所以我有这个 start1.cs 文件:
#!/bin/bash
apt-get install curl
curl -sL https://deb.nodesource.com/setup_12.x | bash
apt-get install -y nodejs
set -e
export PORT=8080
export ASPNETCORE_URLS=http://*:$PORT
dotnet "Web.Identity.dll"
其中 Web.Identity.dll 是我的应用程序的 dll。
3) 将启动命令设置为 /home/site/wwwroot/start1.sh(在 Azure 门户 - 应用服务配置 - 或 Azure DevOps)。
就这些了。