Visual Studioを介してWebサービスを実行しようとしました。私は次のような問題に直面しました:
---------------------------
Microsoft Visual Studio
---------------------------
Unable to launch the IIS Express Web server.
Failed to register URL "http://localhost:63591/" for site "xxxxxx" application
"/". Error description: The process cannot access the file because it is being
used by another process. (0x80070020)
---------------------------
OK
---------------------------
タスクマネージャーを見て、PID 4がシステムによって使用され、その説明がNT Kernel & System.
であることがわかったので、http service
を停止しようとしました。すべての依存サービスが停止しました。しかし、私はhttpサービスを停止する際に問題に直面しています
The service is starting or stopping. Please try again later.
そこで、手動でサービスを停止および開始しようとしました。ただし、終了プロセスは無効になっています。誰でもこの問題を解決できれば助かります
から https://www.davidsalter.co.uk/unable-to-launch-the-iis-express-web-server-error-0x80070020/
エラーコード0x80070020
はERROR_SHARING_VIOLATION
を意味し、IIS Express(またはIIS)の場合、リッスンしようとしているポートが別のプロセスによって使用されていることを意味します。
netstat
コマンドを使用して、ポートを使用しているアプリケーションを確認します。
netstat -ao | findstr <port_number_to_search_for>
a
パラメーターは、すべての接続とリスニングポートを表示するようにnetstatに指示します。
o
パラメーターは、接続に関連付けられたプロセスIDを表示するようにnetstatに指示します。
上記のnetstatコマンドを実行すると、次のような出力が生成されます。
C:\>netstat -ao | findstr 4026
TCP 12.0.0.1:4026 cs-pc:4026 LISTENING 9544
表示される最後の番号(ここでは9544)はプロセスIDです。
同じ問題がありました。 Visual Studioを再起動しただけで機能しました。
同じ問題がありました。 @Kautsky Lozanoが上で述べたように別のアプリケーションがそのポートを使用しています。
したがって、[Windows OSの場合]だけ:
ソリューションをVisual Studio 2012から2015にアップグレードした後、同じ問題に遭遇しました。ここに来てnetstat
を実行したのは、他のアプリケーションが同じポートを使用していないことを見つけるためだけです。ソリューション内のapplicationhost.config
のUsers/<username>/Documents/IISExpress/config
とapplicationhost.config
フォルダーの.vs
に同じポートがマップされた同じサイトがあったことがわかりました。アップグレード直後に問題が発生しなかったことにも注意してください。ある朝、一貫して失敗し始めます。数回再起動しても問題は解決しないようです。
競合するサイトをマイドキュメントに保存されているサイトから削除し、Visual Studioを再起動すると問題が解決しました。
MVCプロジェクトのアップグレード のときにこの問題が発生しました。既存の.csprojファイルに新しいMVC .csprojをコピーし、完全に機能するプロジェクトに戻りました。私が考慮しなかったのは、古い.csprojの既存のポート番号です。新しいプロジェクトには新しいポート番号がありましたが、プロジェクト/アセンブリ名は共有されていました。 IIS Expressが気を失い、この例外をスローするのに十分でした。
古いポート番号をgitから掘り起こし、IIS Express URLを変更してProject Settingsに含めるだけで修正できました。
コマンドコンソールにアクセスせずにこれを行う最も簡単な最初の方法は、すべてのアプリケーション(VSを含む)をシャットダウンしてから、VSを単独で起動して再試行することです。ブラウザのような別のアプリケーションが競合を引き起こしている可能性があります。私の場合、Chromeが原因で、すべてをシャットダウンしてVSを再起動すると解決しました。 Chromeを再度開いたところ、すべてが正常でした。
上記のnetstatのものは便利ですが、私にとっては、私が提案していることを実行できない場合に限られます。
別のアプリケーションがそのポートを使用しています。これはあなたを助けることができます
すべての答えを要約します。 2つの解決策があります。両方とも私のために働いた。 -ソリューション#1同じポートを使用するアプリを強制終了します。 -ソリューション#2プロジェクトに別のポートを使用するようにIIS Expressを構成します。
解決策#1(エラーメッセージのポートが443であると仮定)コマンドラインで実行します。
netstat -ao | findstr 443
戻ります:TCP 0.0.0.0:443 pe01:0 LISTENING 2904
最後の番号(@ chris-schiffhauerに感謝)は、PIDを強制終了します。 [タスクマネージャ]-> [プロセス]-> [すべてのユーザーのプロセスを表示]に移動し、PID = 2904のプロセスを強制終了します。私の場合、それはVmWareホストでした。
ソリューション#2(メッセージは:URLの登録に失敗しました " http:// localhost:433/ "サイト" MyProject.Website0 "の場合...)。 notepad ++で次のファイルを開きます:C:\Users\MY_USER_NAME\Documents\IISExpress\config\applicationhost.config
<site name="MyProject.Website0" id="...
...
<bindings>
<binding protocol="http" bindingInformation="*:80:localhost" />
<binding protocol="https" bindingInformation="*:443:localhost" />
</bindings>
433
を4330
などの別のものに変更するか、競合する<binding.../>
タグを削除します。
Web Project Properties >> Web >> Project Url >> Change port ieに移動します: http:// localhost:22345 / => http:// localhost:22346 / このヘルプを願っています!
Netstatで競合が発生していなくても、この問題が発生しました。
以下は私のためにそれを修正しました:
私の場合、次のことを行うとうまくいきました。
Visual Studioを再起動すると、プロジェクトに完全に新しいポート番号が割り当てられ、完全に実行されました
この同じ問題を修正するために半日を無駄にしたので、最終的にはうまくいった解決策を追加する必要があると感じました。
TL; DR問題が使用されていないことをnetstat
が示している場合でも、まったく異なる範囲で他のいくつかを試してください。
以前にこの問題に遭遇したことがありますが、通常はVisual Studioの再起動、ポートの変更(1ずつ増加)、または再起動がトリックを実行します。しかし、今回はこれが役に立たず、netstat
は矛盾するプロセスを見つけられませんでした。 IISとvisual studioを再インストールし、干渉していると思われる他のプログラムをいくつか削除しました。 IISが同じサイトの複数のインスタンスを起動しようとしていたようです。
最終的に、netstat
なしでfindstr
を実行しようとしました。アクティブなポートのリストを視覚的にスキャンし、試したものはリストされていませんが、同様の範囲のポートを使用するプロセスがいくつかあることに気付きました。その代わりに、私は無料で、ポート番号を選んだ範囲を探しましたが、それは今は機能しているようです。
これがうまくいった理由を誰かが説明できるかどうか聞いてみたいです。
ポート番号が一致しません
私の場合、問題はソリューションフォルダーの下にある.vsの構成ファイルにあるバインドタグにあり、ポート番号が一致しませんでした。バインディングは次のとおりでした
<bindings>
<binding protocol="http" bindingInformation=":16433:localhost" />
</bindings>
そして私の設定では、URLをhttp://localhost:1943/
として設定しました
だから私は内部バインディングを削除してWebアプリを実行し、異なる番号で新しいバインディングを生成し、新しい生成されたポートを自分の設定にコピーして、エラーがなくなりました。
私はすでに次のことを試しました:
また、これを使用してみましたが、結果はゼロです。
netstat -aon | 「:80」を見つける
私も使用してみましたが、ゼロの結果も返しました。
netstat -ao | findstr
そのため、この「Microsoft.VsHub.Server.HttpHostx64.exe」を削除すると、プロジェクトが正常に開始され、ブラウザーで起動します。エラーが修正されました。理由はわかりませんが、うまくいきます。
スクリーンショットは次のとおりです。
<site>
から</site>
タグまでのすべてを削除することで、この問題を修正できました。
Users/<username>/Documents/IISExpress/config/applicatiohost.config
ファイル
<sites>
<site>
.
. ===> remove this content including the <site> and </site> tags.
.
</site>
</sites>