テーマ §
angfwebplayer4はローカルでは動作しているが、クラウドでは動作しない
原因についてある程度調査したが、結果としてこのままサポート終了とした
試験方法 §
Azureで新しいインスタンスを作成し、そこに配置して動作を調べた。
症状の詳細 §
indexページにアクセスしようとしても読み込まない。
その後、以下のパターンがある
- タイムアウトする
- 502になる
- 503になる
- 長時間待った後でページが表示される
全般的に重すぎるだけである。
症状はAzureに配置した時にしか起きない。
またAzureに再配置してから発生するようになった。再配置を行う前は起きていない。
静的なファイルへのアクセスは遅くない。ただし初期化が終わるまでは待たされる
調査結果 §
処理が重くなる要因は電子メール送信など複数あったがいずれも致命傷ではなかった。
ソースをコメントアウトしながら範囲を絞り込んだところ、以下の部分が問題である等結論に至った。
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
Owinモジュールが古いのが良くないのかと思ってnugetでアップデートを試みたが、依存モジュールが対応していないので最新班にすることはできなかった。
データベースの接続文字列の問題かと思ったが、これは問題ではなかった。
結論 §
おそらく認証周りのコードが何か問題を起こしていると推定されるが、これは昔のVisual Studioが作ったコードで全く理解していない。全て捨てて新しくこれに相当するコードを生成させた方が良いだろうが、サポートを終了する予定のソースでそこまでの手間がは掛けられない。また、ほぼ同等の機能を持つ後継サービスの公開を開始したばかりである。
そのため、angfwebplayer4のサービス提供は終了と決断した。
おそらく、動作する方法はあり、それは現実的な手間で達成しうると思うのだが、その手間を捻出することは難しいだろう。