Visual StudioでASP.NET プロジェクトを実行すると IIS Expressで "指定されたポートは使用中です" エラーが発生しアプリケーションを実行できない - Visual Studio

Visual StudioでASP.NET プロジェクトを実行すると IIS Expressで "指定されたポートは使用中です" エラーが発生しアプリケーションを実行できない現象と対処法についてです。

現象

Visual StudioでASP.NET プロジェクトをデバッグ実行すると IIS Expressでエラーが発生します。画面の右下に[IIS Express 通知]のポップアップが表示されます。


[IIS Express 通知]のポップアップをクリックすると下図のウィンドウが開き、下記のエラーメッセージが表示されます。
エラーメッセージは次の通りです。
エラーメッセージ
指定されたポートは使用中です
ポート 'nnnnn' はその他のアプリケーションで既に使用されています。



エラーが発生するため、Webブラウザが起動されず、Webアプリケーションも実行できません。
また、デバッグを終了したタイミングで以下のエラーメッセージが表示されます。
エラーメッセージ
ID nnnnn のプロセスは実行されていません。



なお、同じソリューション内の別のプロジェクトではこの現象が発生しないものもあります。

対処法1: プロジェクトファイルを作成しなおす

この問題はプロジェクトファイルの記述内容が影響しているため、新規のプロジェクトファイルを作成しなおすと問題が解消される場合があります。

対処法2: プロジェクトのプロパティを変更する

プロジェクトファイルを作成しなおす作業が手間のかかる場合、プロジェクトのプロパティを変更して対処できる場合もあります。
Visual Studio を起動し、ソリューションエクスプローラーで問題の起きるプロジェクトのノードをクリックして選択します。

プロパティウィンドウの内容を確認します。

下図は正常に動作するプロジェクトの設定内容です。[SSL URL] と [URL] の項目のURLのポート番号がそれぞれ違うことが確認できます。


一方、下図は "指定されたポートは使用中です" エラーの発生するプロジェクトです。[SSL URL] と [URL] の項目のURLを確認すると、 どちらも同じポート番号になっていることが確認できます。


プロパティウィンドウの [SSL 有効]の値をFalseに変更します。設定値をFalseにすると、[SSL URL]の欄の値が空欄になります。


[SSL 有効]がFalseになったことを確認して、プロジェクトをビルドします。
正常にビルドができたら、再度プロジェクトのプロパティウィンドウを開き[SSL 有効]の値を True に変更します。


[SSL 有効]の値が True に設定されると[SSL URL]のURLの値が再度設定されます。 この時、[SSL URL]と[URL]のURLのポート番号が異なった番号になっていることを確認します。
この状態でプロジェクトをビルドし実行し、 "指定されたポートは使用中です" エラーが発生しなくなるかを確認します。

対処法3: .csprojファイルを編集する (SSLを有効にする場合)

「対処法2」を実施してもうまく動作しない場合は、".csproj" ファイルのポートの記述を修正すると問題が解消される場合があります。

IISExpressSSLPort

変更前
    <Use64BitIISExpress />
    <IISExpressSSLPort />
    <IISExpressAnonymousAuthentication />
    <IISExpressWindowsAuthentication />
    <IISExpressUseClassicPipelineMode />
IISExpressSSLPort にポート番号を設定します。"53333"は一例です。
変更後
    <Use64BitIISExpress />
    <IISExpressSSLPort>53333</IISExpressSSLPort>
    <IISExpressAnonymousAuthentication />
    <IISExpressWindowsAuthentication />
    <IISExpressUseClassicPipelineMode />

WebProjectProperties の IISUrl, DevelopmentServerPort

変更前
    <WebProjectProperties>
      <UseIIS>True</UseIIS>
      <AutoAssignPort>True</AutoAssignPort>
      <DevelopmentServerPort>54321</DevelopmentServerPort>
      <DevelopmentServerVPath>/</DevelopmentServerVPath>
      <IISUrl>http://localhost:51234/</IISUrl>
      <NTLMAuthentication>False</NTLMAuthentication>
      <UseCustomServer>False</UseCustomServer>
      <CustomServerUrl>
      </CustomServerUrl>
      <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
    </WebProjectProperties>

ポート番号を変更します。IISUrlタグのポート番号はIISExpressSSLPortで記述したポート番号と合わせます。
(ポート 54444, 53333 は一例です。)
また、IISUrl のプロトコルを https:// に変更します。
変更後
    <WebProjectProperties>
      <UseIIS>True</UseIIS>
      <AutoAssignPort>True</AutoAssignPort>
      <DevelopmentServerPort>54444</DevelopmentServerPort>
      <DevelopmentServerVPath>/</DevelopmentServerVPath>
      <IISUrl>https://localhost:53333/</IISUrl>
      <NTLMAuthentication>False</NTLMAuthentication>
      <UseCustomServer>False</UseCustomServer>
      <CustomServerUrl>
      </CustomServerUrl>
      <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
    </WebProjectProperties>

変更後、ソリューションファイルを再度開き、プロジェクトを実行するとエラーが発生せずに実行できます。

対処法4: .csprojファイルを編集する (SSLを有効にしない場合)

「対処法2」を実施してもうまく動作しない場合は、".csproj" ファイルのポートの記述を修正すると問題が解消される場合があります。

IISExpressSSLPort

変更後
    <Use64BitIISExpress />
    <IISExpressSSLPort />
    <IISExpressAnonymousAuthentication />
    <IISExpressWindowsAuthentication />
    <IISExpressUseClassicPipelineMode />
IISExpressSSLPort にはポート番号を設定しません。

WebProjectProperties の IISUrl, DevelopmentServerPort

DevelopmentServerPort と IISUrl のUポート番号は同じ番号を設定します。
変更後
        <WebProjectProperties>
          <UseIIS>True</UseIIS>
          <AutoAssignPort>True</AutoAssignPort>
          <DevelopmentServerPort>60963</DevelopmentServerPort>
          <DevelopmentServerVPath>/</DevelopmentServerVPath>
          <IISUrl>https://localhost:60963/</IISUrl>
          <NTLMAuthentication>False</NTLMAuthentication>
          <UseCustomServer>False</UseCustomServer>
          <CustomServerUrl>
          </CustomServerUrl>
          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
        </WebProjectProperties>

対処法5: netsh http add iplisten コマンドを利用する

上記対処法をすべて実施してもエラーが解消されない場合は、この対処法を実施します。
管理権限のついたコマンドプロンプトまたは、Powershellで以下のコマンドを実行します。
netsh http add iplisten ipaddress=::

正しく実行できると 「IP アドレスを正常に追加しました」のメッセージが表示されます。

補足:削除する場合

削除する場合は netsh http delete iplisten コマンドを実行します。
netsh http delete iplisten ipaddress=::


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-05-19
改訂日: 2022-05-19
作成日: 2020-10-19
iPentec all rights reserverd.