我有一个在 2017 年 11 月创建的 Azure 应用服务。应用服务称为 ManifestAPI。
我为应用服务创建了一个名为 ManifestAPI-QA 的 QA 部署槽,并且从那时起我一直很高兴地将我的 API 代码更新部署到 QA 槽。我正在使用 Kudu zipdeploy API 从我的 Bamboo 部署服务器部署到 Azure QA 部署槽。没有错误,并且所有端点都工作正常。
现在,我们正准备将产品转移到生产环境,并且我正在尝试部署到基础应用服务 ManifestAPI。所以我在 Bamboo 中创建了一个部署,使用与部署到 QA 插槽完全相同的发布代码,并将其部署到 ManifestAPI URL。但是,当我尝试在基础应用服务中运行 API 时,我收到 502.5 错误。
我尝试使用相同的代码库和来自基本 ManifestAPI 应用服务的发布配置文件从 VisualStudio 2017 中直接发布,认为 Bamboo 部署存在问题。但我得到了同样的 502.5 错误。
查看 eventlog.xml 文件中 LogFiles 文件夹中的 Kudu 站点,我看到以下内容;
<Event>
<System>
<Provider Name="IIS AspNetCore Module"/>
<EventID>1000</EventID>
<Level>1</Level>
<Task>0</Task>
<Keywords>Keywords</Keywords>
<TimeCreated SystemTime="2018-06-25T23:03:57Z"/>
<EventRecordID>1583337234</EventRecordID>
<Channel>Application</Channel>
<Computer>RD0003FF11B70E</Computer>
<Security/>
</System>
<EventData>
<Data>Application 'MACHINE/WEBROOT/APPHOST/ManifestAPI' with physical root 'D:\home\site\wwwroot\' failed to start process with commandline 'dotnet .\ManifestAPI.dll', ErrorCode = '0x80004005 : 80008096.</Data>
</EventData>
</Event>
检查 Google 上的错误似乎暗示安装在 IIS 本身上的 .Net Core DLL 存在问题。
另外,由于 API 在 QA 部署槽 IIS 实例中运行良好,我相信这意味着我的代码很好。所以,我认为微软提供的 IIS 实例和 .NET Core 文件一定存在一些问题。
我比较了 ManifestApi 和 ManifestAPI-QA 实例的扩展,它们在两个实例上都是相同的。
ASP.NET Core 2.1 (x86) Runtime 2.1.0-preview2-final No
ASP.NET Core Extensions 2.1.0-preview2-final No
我尝试从工作 QA 插槽交换到生产(基本应用服务)插槽并得到相同的 502.5 错误。
我创建了一个名为 ManifestAPI-Prod 的新部署槽,通过克隆 ManifestAPI-qa 实例,将我的部署包部署到该槽,并设置连接字符串和应用程序设置以完全匹配我在基本应用程序服务应用程序设置部分中的内容。ManifestAPI-Prod 部署槽工作得很好。
因此,我在 Azure 中与 Microsoft 建立了一个支持案例,到目前为止,我已经花了 2 多天的时间与技术人员来回交流,试图解决这个问题。他们一直说这一定是我的代码中的一个问题,但这对我来说没有任何意义,因为完全相同的部署包在 QA 插槽和现在的 Prod 插槽中工作。一位技术人员甚至说我没有正确部署。但是,我在 VS2017 中使用 dotnet publish,然后压缩生成的文件目录并通过 zipdeploy API 推送到 Kudu。这对部署插槽非常有效,我无法理解我是如何错误地部署它的。
在这一点上,我不知道如何将 API 部署到生产(基本)插槽。
我在这里想念什么?
2018 年 6 月 27 日更新 通过卸载 Azure 生产槽实例中的所有扩展解决了这个问题。然后重新安装 Microsoft Core 扩展。Extensions 刀片仍然显示 ASP.NET Core Extensions 2.1.0-preview2-final 但是当我转到该实例的 Azure 控制台并键入 dotnet --info 时,它列出了以下内容;
.NET Core SDK (reflecting any global.json):
Version: 2.1.301
Commit: 59524873d6
Runtime Environment:
OS Name: Windows
OS Version: 10.0.14393
OS Platform: Windows
RID: win10-x86
Base Path: D:\Program Files (x86)\dotnet\sdk\2.1.301\
Host (useful for support):
Version: 2.1.1
Commit: 6985b9f684
.NET Core SDKs installed:
1.1.8 [D:\Program Files (x86)\dotnet\sdk]
2.1.101 [D:\Program Files (x86)\dotnet\sdk]
2.1.300 [D:\Program Files (x86)\dotnet\sdk]
2.1.301 [D:\Program Files (x86)\dotnet\sdk]
值得注意的是 2.1.0-preview2-final 的列表不再出现在 dotnet --info 显示的文件列表中