Visual studio 対象のコンピューターによって拒否されたため、接続できませんでした。

Visual studio 対象のコンピューターによって拒否されたため、接続できませんでした。

2021.12.08 2021.11.11

この記事は約3分で読めます。

はじめに:Azure Functions のタイマートリガーでローカルデバッグするとエラーでデバッグできない

Azure Functionsのタイマートリガーをローカルでデバッグしようとすると、画像のようなワーニングメッセージが表示されます。

Visual studio 対象のコンピューターによって拒否されたため、接続できませんでした。
ワーニングメッセージ

Failed to verify “AzureWebJobsStorage” connection specified in “local.settings.json”. Is the local emulator installed and running?

「local.settings.jsonで設定したAzureWebJobsStorageがインストールされ実行されていますか?」とのこと。

ワーニングなので、Debug anyway(とにかくデバッグという意らしい)を押して続行しても良いのですが、結局実行時にエラーとなりデバッグすることができません。

The listener for function 'Functions.TimerTrigger' was unable to start. Azure.Core: Retry failed after 6 tries. Retry settings can be adjusted in ClientOptions.Retry. (対象のコンピューターによって拒否
されたため、接続できませんでした。) (対象のコンピューターによって拒否されたため、接続できませんでした。) (対象のコンピューターによって拒否されたため、接続できませんでした。) (対象のコンピューターによって拒否されたため、接続でき
ませんでした。) (対象のコンピューターによって拒否されたため、接続できませんでした。) (対象のコンピューターによって拒否されたため、接続できませんでした。). Azure.Core: 対象のコンピューターによって拒否されたため、接続できませんで
した。. System.Net.Http: 対象のコンピューターによって拒否されたため、接続できませんでした。. System.Private.CoreLib: 対象のコンピューターによって拒否されたため、接続できませんでした。.

解決策:Azuriteを実行する

デバッグ実行する前に「Azurite」を実行します。

タイマートリガーのAzure Functionsを実行するには、Azure Storageにアクセスする必要があります。

完全にローカルでAzure Functionsのデバッグする場合、ローカルでAzure Storageのエミュレーターを起動する必要があるのですが、デバッグ実行するときにエミュレーターが起動していないので、警告を出していたようです。

本質的には「対象のコンピューターによって拒否されたため、接続できませんでした。」のエラーメッセージが、「ローカルの Azure Storage にアクセスできませんでした。」の意味のようです。

Azuriteの起動方法は開発ツールによって異なり、マイクロソフト公式ドキュメントに記載があるので割愛します。

ローカルでの Azure Storage の開発に Azurite エミュレーターを使用する

補足:開発環境情報

ちなみに私は以下の環境で動作しました。

  • Windows 10
  • Visual Studio Code 1.62.1
  • [拡張機能]Azure Functions v1.6.0
  • [拡張機能]Azurite v3.14.3

ASP.NET アプリケーションのデバッグを開始すると 「’IIS Express’ に接続できませんでした。」エラーが発生する現象と対処法について紹介します。

現象

ASP.NET Webアプリケーションのデバッグ実行を開始すると、以下のエラーメッセージが表示されます。

エラーメッセージ

Webサーバー 'IIS Express' に接続できませんでした。

発生タイミングは Visual Studio のバージョンアップ後に発生することが多いようです。

原因

いくつか原因があるようですが、SSL設定が影響している場合が多いようです。

対処法

問題が発生するASP.NET アプリケーションのプロジェクトを開きます。プロジェクトのプロパティを表示します。左側のメニューで[デバッグ]をクリックして選択します。 デバッグ設定画面が表示されます。

Visual studio 対象のコンピューターによって拒否されたため、接続できませんでした。

画面の下部に[SSL を有効にする]のチェックボックスがあります。チェックボックスにチェックが付いている場合はチェックを外します。
チェックを外した状態で、ASP.NET アプリケーションのデバッグを開始します。IIS Expressが起動し、非SSLのURLでデバッグが開始されれば、SSL設定が原因です。 チェックを外してもデバッグが開始できない場合は、IIS Express設定に問題がある可能性がありますので、次の処理を試します。

  • ソリューションのフォルダにある ".vs" フォルダの削除
  • すでに動作している IIS Expressのサイトを停止
  • アプリURL のポート番号を変更
  • マシンの再起動

非SSLでのASP.NET アプリケーションのデバッグができる場合は、SSLの設定に問題がある可能性がありますので、管理者モードでVisual Studioを起動します。
スタートメニューのVisual Studio のショートカットを右クリックして、[その他]メニューの[管理者として実行]の項目をクリックします。

Visual Studio が管理者モードで起動します。ウィンドウの右上に[管理者]の表示がされていることで、管理者モードで起動しているかの判別ができます。

ASP.NET アプリケーションのプロジェクトを開き、プロジェクトのプロパティ画面を表示します。デバッグ設定画面の下部の [SSL を有効にする] のチェックボックスをクリックしてチェックをつけます。チェック後、ASP.NET アプリケーションのデバッグを開始します。管理者モードでデバッグが開始できることを確認します。

管理者モードでデバッグが開始できることを確認後、Visual Studioを終了し、管理者モードではない状態でVisual Studioを再起動します。 再起動後にASP.NETプロジェクトを開き、デバッグを開始します。通常モードでもASP.NET アプリケーションのデバッグか開始できることを確認します。

以上の手順で、ASP.NETアプリケーションをIIS Expressでデバッグできるようになります。

最終更新日: 2021-05-04

作成日: 2020-11-29