2017 年 11 月に作成した Azure App Service があります。App Service は ManifestAPI と呼ばれます。
ManifestAPI-QA と呼ばれるアプリ サービスの QA デプロイ スロットを作成し、それ以来、API のコード更新を QA スロットに喜んでデプロイしています。Kudu zipdeploy API を使用して、Bamboo デプロイ サーバーから Azure QA デプロイ スロットにデプロイしています。エラーはなく、すべてのエンドポイントが正常に動作しています。
現在、製品を運用環境に移行する準備をしており、ベースの 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 インスタンスの拡張機能を比較すると、両方のインスタンスで同じです。
ASP.NET Core 2.1 (x86) Runtime 2.1.0-preview2-final No
ASP.NET Core Extensions 2.1.0-preview2-final No
作業中の QA スロットから Production (ベース App Service ) スロットにスワップしようとしたところ、同じ 502.5 エラーが発生しました。
ManifestAPI-qa インスタンスのクローンを作成して、ManifestAPI-Prod という新しいデプロイ スロットを作成し、デプロイ パッケージをそのスロットにデプロイし、接続文字列とアプリケーション設定を、ベース アプリ サービスの [アプリケーション設定] セクションにあるものと正確に一致するように設定しました。ManifestAPI-Prod デプロイ スロットは問題なく機能しました。
そこで、Azure で Microsoft にサポート ケースをオープンしました。これまでのところ、これを理解しようとする技術者と 2 日以上やり取りしてきました。私のコードの問題である必要があると彼らは言い続けていますが、まったく同じ展開パッケージが QA スロットと現在の Prod スロットで機能するため、それは私には意味がありません。ある技術者は、私が正しく展開していないとさえ言いました。ただし、VS2017 で dotnet publish を使用してから、ファイルの結果のディレクトリを圧縮し、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 によって表示されるファイルのリストに含まれなくなったことに注意してください。