Blazorアプリケーションのアプリケーションプールを停止すると "Application attempting to reconnect to the server" メッセージが表示されアプリケーションが操作不能になる

Blazorアプリケーションのアプリケーションプールを停止すると "Application attempting to reconnect to the server" メッセージが表示されアプリケーションが操作不能になる現象の紹介です。

現象

Blazorアプリケーションのアプリケーションプールを停止すると以下のメッセージが表示されます。

メッセージ
Application attempting to reconnect to the server: n of 8


このメッセージが表示されるとアプリケーションが操作不能になります。

再現手順

Blazorアプリケーションのページにアクセスします。 今回利用しているアプリケーションはこちらの記事で紹介しているテキストボックスの値を取得するアプリケーションです。
Blazorアプリケーションのアプリケーションプールを停止すると

テキストボックスに値を入力してボタンをクリックして画面を変更します。
Blazorアプリケーションのアプリケーションプールを停止すると

サーバーでこのBlazorアプリケーションのアプリケーションプールを停止します。
Blazorアプリケーションのアプリケーションプールを停止すると
Blazorアプリケーションのアプリケーションプールを停止すると

アプリケーションプールを停止するとすぐに、下図の"Application attempting to reconnect to the server"のメッセージが表示されます。
メッセージがページ全体にオーバーレイ表示されるため、テキストボックスの入力やボタンのクリックなどのページの操作ができなくなってしまいます。
Blazorアプリケーションのアプリケーションプールを停止すると

停止したアプリケーションプールを起動して再開します。
Blazorアプリケーションのアプリケーションプールを停止すると
Blazorアプリケーションのアプリケーションプールを停止すると

アプリケーションプールを起動すると、"Application attempting to reconnect to the server"のメッセージが、 "Could not reconnect to the server. Reload the page to restore functionality."に変わります。
Blazorアプリケーションのアプリケーションプールを停止すると
Blazorアプリケーションのアプリケーションプールを停止すると

ページをリロードするか、メッセージの[Reload]リンクをクリックするとページが再表示できますが、入力したテキストボックスの値などは初期状態に戻ってしまいます。
Blazorアプリケーションのアプリケーションプールを停止すると

通信状況(WebSocketの場合)

ページ表示時の状態です。
Blazorアプリケーションのアプリケーションプールを停止すると

WebSocketの接続が開かれメッセージが受信されている動作を確認できます。
Blazorアプリケーションのアプリケーションプールを停止すると

アプリケーションプールを停止すると、 "Error: Connection disconnected with error 'Error: WebSocket closed with status code: 1006 (no reason given).'." のメッセージが返り、WebSocketが閉じられます。
その後、negotiateのPOSTリクエストが出ますが、503レスポンスが返り、"Error: Failed to complete negotiation with the server"のレスポンスが返ります。
Blazorアプリケーションのアプリケーションプールを停止すると

アプリケーションプールを再開すると、再度通信が始まりますが、セッション情報が失われているためか、元の状態には戻りません。
Blazorアプリケーションのアプリケーションプールを停止すると

通信状況(ロングポーリングの場合)

ページ表示時の状態です。
Blazorアプリケーションのアプリケーションプールを停止すると

アプリケーションプールを停止すると、503レスポンスが返り、"Application attempting to reconnect to the server"のメッセージが表示されます。
Blazorアプリケーションのアプリケーションプールを停止すると

アプリケーションプールを再開すると、再度通信が始まりますが、セッション情報が失われているためか、元の状態には戻りません。
Blazorアプリケーションのアプリケーションプールを停止すると

対処法

Blazorアプリケーションの仕様のため、アプリケーションプールを停止した場合には、アプリケーションプールの再開後にページの再読み込みは必須です。 一方で、サーバーとの接続が切断された場合に全画面のオーバーレイのポップアップメッセージを表示しない方法はあります。

  • 切断時のオーバーレイのメッセージを表示しない方法はこちらの記事を参照してください。
  • 切断時のメッセージを変更したい場合はこちらの記事を参照してください。


AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2023-03-01
Copyright © 1995–2025 iPentec all rights reserverd.