首页 文章

部署到具有部署位置的Azure 生产环境 槽的正确方法是什么

提问于
浏览
0

我有一个我在2017年11月创建的Azure应用服务.App Service称为ManifestAPI .

我为app服务创建了一个名为ManifestAPI-QA的QA部署槽,并且从那时起我就乐意将API的代码更新部署到QA插槽 . 我正在使用从Bamboo部署服务器到Azure QA部署插槽的Kudu zipdeploy API进行部署 . 没有错误,并且所有 endpoints 都正常工作 .

现在,我们正准备将产品转移到 生产环境 阶段,我正在尝试部署到基础App Service ManifestAPI . 因此,我使用与部署到QA插槽完全相同的版本代码在Bamboo中创建了一个部署,并将其部署到ManifestAPI URL . 但是,当我尝试在基本应用服务中运行API时,出现502.5错误 .

我尝试使用相同的代码库和基础ManifestAPI App Service中的发布配置文件从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实例中工作正常,我相信这意味着我的代码很好 . 因此,我认为Microsoft提供的IIS实例和.NET Core文件一定存在问题 .

我比较了ManifestApi和ManifestAPI-QA实例的Extensions,它们在两个实例上都是相同的 .

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中与微软公开了一个支持案例,到目前为止,我已经花了两天多时间与技术人员来回试图解决这个问题 . 他们一直说它必须是我的代码中的问题,但这对我没有任何意义,因为完全相同的部署包在QA插槽和现在的Prod插槽中工作 . 一位技术人员甚至说我没有正确部署 . 但是,我在VS2017中使用dotnet发布,然后压缩文件的结果目录并通过zipdeploy API推送到Kudu . 这对于部署插槽一直很有用,我无法理解我是如何错误地部署它的 .

此时,我对如何将API部署到 生产环境 (基础)插槽感到困惑 .

我在这里错过了什么?

UPDATE 6/27/18 这是通过卸载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显示的文件列表中

1 回答

  • 1

    我不知道为什么你的应用程序失败了,但我确实看到一个红旗:你似乎在使用 2.1.0-preview2-final . 现在2.1是GA,您应该更新您的项目以使用它 .

    此外,请注意预览版本需要安装站点扩展,而最终位不需要 . 因此,您需要卸载预览站点扩展(您可以从Azure门户执行此操作) .

相关问题