Visual StudioでASP.NET プロジェクトを実行すると IIS Expressで "指定されたポートは使用中です"
エラーが発生しアプリケーションを実行できない現象と対処法についてです。
Visual StudioでASP.NET プロジェクトをデバッグ実行すると IIS Expressでエラーが発生します。画面の右下に[IIS Express 通知]のポップアップが表示されます。
[IIS Express 通知]のポップアップをクリックすると下図のウィンドウが開き、下記のエラーメッセージが表示されます。
エラーメッセージは次の通りです。
エラーが発生するため、Webブラウザが起動されず、Webアプリケーションも実行できません。
また、デバッグを終了したタイミングで以下のエラーメッセージが表示されます。
なお、同じソリューション内の別のプロジェクトではこの現象が発生しないものもあります。
この問題はプロジェクトファイルの記述内容が影響しているため、新規のプロジェクトファイルを作成しなおすと問題が解消される場合があります。
プロジェクトファイルを作成しなおす作業が手間のかかる場合、プロジェクトのプロパティを変更して対処できる場合もあります。
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のポート番号が異なった番号になっていることを確認します。
この状態でプロジェクトをビルドし実行し、 "指定されたポートは使用中です" エラーが発生しなくなるかを確認します。
「対処法2」を実施してもうまく動作しない場合は、".csproj" ファイルのポートの記述を修正すると問題が解消される場合があります。
<Use64BitIISExpress />
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
IISExpressSSLPort にポート番号を設定します。"53333"は一例です。
<Use64BitIISExpress />
<IISExpressSSLPort>53333</IISExpressSSLPort>
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
<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>
変更後、ソリューションファイルを再度開き、プロジェクトを実行するとエラーが発生せずに実行できます。
「対処法2」を実施してもうまく動作しない場合は、".csproj" ファイルのポートの記述を修正すると問題が解消される場合があります。
<Use64BitIISExpress />
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
IISExpressSSLPort にはポート番号を設定しません。
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>
上記対処法をすべて実施してもエラーが解消されない場合は、この対処法を実施します。
管理権限のついたコマンドプロンプトまたは、Powershellで以下のコマンドを実行します。
netsh http add iplisten ipaddress=::
正しく実行できると 「IP アドレスを正常に追加しました」のメッセージが表示されます。
netsh http delete iplisten
コマンドを実行します。netsh http delete iplisten ipaddress=::