LAN経由でVisualStudioデバッグIISExpressサーバーに接続する


84

VS2012で開発されたテストASP.NETMVC3アプリケーションがあります。デバッグを開始すると、へのリクエストを介してホストマシンからアプリにアクセスしますhttp://localhost:<portnumber>。しかし、私は経由してイントラネット内のリモートマシンから同じアプリケーションにアクセスしようとした場合http://<ip>:<portnumber>、私が得るHTTP error 400: Bad request. Invalid Host Name.すべてのサーバー設定にアクセスできない限り、それはIIS Expressの上で動作するよう。

これを解決する方法はありますか?


無料の拡張機能であるConveyorを使用して、このmarketplace.visualstudio.com/を実行します。構成を変更しなくても問題なく動作します
ジムWは

回答:


138

更新

プロセスをよりよく説明するビデオを作成しました、https://youtu.be/5ZqDuvTqQVs

Visual Studio 2013以降を使用している場合は、これを機能させるために管理者として実行してください。


%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config(VS2015では$(solutionDir)\.vs\config\applicationhost.config)ファイルを 開きます。内部には次のようなものが表示されます。

<site name="WebSite1" id="1" serverAutoStart="true">
    <application path="/">
        <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:8080:localhost" />
    </bindings>
</site>

をに変更bindingInformation=":8080:localhost"しますbindingInformation="*:8080:*"(ポート番号、私の場合は8080は異なります)。

注:機能しない場合はbindingInformation="*:8080:、アステリックスを削除してみてください。

次に、ファイアウォールがそのポートでの着信接続を許可していることを確認します。IISExpressに構成ファイルを再ロードさせるには、システムまたは少なくともVisualStudioを再起動する必要がある場合があります。

これが機能しない場合は、次の回答をご覧くださいhttps//stackoverflow.com/a/5186680/985284


30
この解決策は私にはうまくいきませんでした。VS2013では、bindingInformation属性を変更した後、IDEを開いてプロジェクトをロードすると、新しいエントリが作成されます(つまり<site name="Website1(1)" id="2" serverAutoStart="true">、別のコンピューターからWebサイトにアクセスできません。
YvánEcarri 2013

5
これはVS2013で私のために働きました: gilesey.wordpress.com/2013/04/21/…–
ジェイカミンズ

10
私のために働いた。主な調整は、管理者としてビジュアルスタジオを実行することでした。
タンメイマンダル2014

20
この問題を抱えているのはなぜ私だけだったのかわかりませんが、bindingInformation="*:8080:*"うまくいかず、@ Y.Ecarriで問題が発生しました。最終的に機能するようになったのは、アスタリスクを削除することでしたbindingInformation=":8080:"。少年はこれが私を夢中にさせました、私はそれが誰かを助けることを願っています。
Drazen Bjelovuk 2014年

5
Drazenと同じように、管理モード+ bindingInformation=":8080:"(*なし)を使用する必要がありました
Matthieu Charbonnier 2015

42

VisualStudio2015非管理者

  1. ソリューションディレクトリで、ファイル.vs\config\applicationHost.configの行を変更します

    <binding protocol="http" bindingInformation="*:44302:localhost" />

    <binding protocol="http" bindingInformation=":44302:" />

    (ここで44302はあなたのポートです)


  1. 管理コマンドプロンプトから:

    私。非管理者がポートにバインドできるようにする

    netsh http add urlacl url=http://*:44302/ user=Everyone

    ii。ファイアウォールの通過を許可する

    netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=44302 dir=in action=allow


  1. VisualStudioからデバッグを開始します

.vsフォルダーはWindows10では非表示になっていることに注意してください。非表示のファイルを表示して表示します。
bhathiya-perera 2017年

ああ!あなたは私のヒーローです!最後に!キーは.vsフォルダーの構成でした。どうもありがとうございました!
twsmale

以下の@ArunPrasadESの説明として、エラーが発生した場合は、管理者としてVSを実行してください。
エルマー

@Elmer IDEを実行し、管理者としてプログラムをデバッグすることは、一般的に悪い考えです(いくつかの狭い例外を除いて)。最も重要なことは、開発中(簡単に修正できる場合)のアクセス許可の問題をマスクすることです。これにより、最終的にプログラムを管理者として実行する必要があります。たとえば、管理者専用の場所にファイルを保存するなどです。 IDEおよび/またはOS /ユーザー権限の問題を修正してください。
gregmac

@gregmac悪いコメントで申し訳ありませんが、バインドオプションを変更し、管理者としてVSを実行しないと、IISに問題が発生しました。これは、新しいWindowsを使用しているため、Windows10のアクセス許可に関連していると思われるプロセスエラーIDです。新しいVS2019インストールでの10インストール。残りの部分については、100%同意します
Elmer

21

iisexpress構成ファイルを変更する場合を除いて、以下のようなコマンドを実行する必要がある場合もあります。

netsh http add urlacl url = http:// *:49419 / user = Everyone


49419ポートはどのような用途ですか?これは単なるポートの例であり、8080である可能性もありますか?
オリゴフレン2016年

私自身の質問に答えます:はい、それはアプリが実行されているポートです。この回答を使用すると、管理者としてVisualSTudioを実行する必要がなくなります。
オリゴフレン2016年

1
それがどのように機能するかについて簡単に説明していただけますか?
ShishirGupta18年

12

VisualStudioを管理者として実行しないようにする方法

Garret@shangkeyunの両方の回答を使用すると、管理者ユーザーとしてVisual Studioを実行しなくても、実行中のWebサイトに接続できます。

  1. 開いた %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
  2. を使用してサイトを検索する name=MySiteName
  3. セクション<binding>内の既存のアイテムを複製します<bindings>。これで、が2行になりbindingます。
  4. bindingInformationの「localhost」の部分を削除します。
  5. ポートが12345次のようになっていると仮定すると、次のようになります。

    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:" />
    
  6. 非管理者がポートにバインドできるようにする

    netsh http add urlacl url=http://*:12345/ user=Everyone
    

2019年の編集:gregmacは、VSインスタンスをホワイトリストに登録する手順を追加しました。私はこれを必要としませんでしたが、とにかくそれをリストします:

  1. netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=12345 dir=in action=allow

6
netshを追加すると、エラーが「Service Unavailable」に変更されました
tofutim 2016

@tofutim同じです。解決策を見つけましたか?
frostymarvelous 2016年

その後、Visual Studioを再起動しましたか?
オリゴフレン2016年

こんにちは。前の行と組み合わせると、netshコマンドが正しくないことに気づきました。上記のポートとして12345を使用しましたが、netshコマンドのサンプルポートとして49419を使用していました。これは私のアップデートで修正されました。
オリゴフレン

10

@Garret Fogerlieの投稿にコメントを追加することができず、コメント投稿者の問題(@ Y.Ecarriと@SamuelEdwinWard)に対応して、Visual Studio 2013を使用して管理モードで実行し、 application.configファイル。

デバッグを起動して同じエラーメッセージが表示されたのapplication.configを確認した後、戻って、Y.Ecarriの問題と同じように自分のサイトの新しいエントリが作成されていることを確認しました。

そこで、デバッグを停止し、ソリューションをVisual Studio開いたままにapplication.configして、新しいエントリ用にファイルを再度編集しました。また、*歌をlocalhost完全に削除しただけなので、新しいエントリには次のようになりました。

<binding protocol="https" bindingInformation=":44300:" />


これが助けになった唯一の解決策です!ありがとう。
code5 2016年

2

%USERPROFILE%ディレクトリを使用して変更とテストに多くの時間を費やす人もいるかもしれません。VSデバッグで実行している場合は、$(solutionDir).vs \ config \ applicationhost.configを使用します


1

byteitのおかげで:

Documents / IISExpress / configのapplicationhost.configに移動します

作業している特定のサイトのエントリを見つけます。

追加:

<binding protocol="http" bindingInformation="*:<your site port>:*" />

既存の前に

 <binding protocol="http" bindingInformation="*:<your site port>:localhost" />

VS2013を使用せずにソリューションを実現するには、再起動時に新しいWebサイトのxmlエントリを作成します。管理者として実行する必要があります。



0

これは私のために働いたものです:

  • IISマネージャーを起動します
  • プロジェクトフォルダを指す新しい仮想ディレクトリを追加します(C:\VSProjects私の場合)
  • IISマネージャー内で新しい仮想ディレクトリを選択します。Directory Browsingオプションのリストから選択します。右側にEnableボタンがあります。クリックして。

これで、を介してネットワーク上のフォルダとプロジェクトビンにアクセスできますmypcname\VSProjects\myProj\outputBinViewer


0

Visual Studio Codeでのデバッグと非常によく似た問題があったので、次を追加して解決しました。

"env": {
      // ...
      "ASPNETCORE_URLS": "http://*:5000" // change to the port you are using
      // ...
},

..から launch.json

どうやら、デフォルトではhttpプロトコルを「localhost:5000」にバインドしているため、localhostでは機能しますIPアドレスでは機能しませんん(リモートでもローカルでもありません)。

別のコンピューターからの要求によってブレークポイントに到達しようとしている場合は、ファイアウォール設定(および/またはウイルス対策)を確認することを忘れないでください

お役に立てれば

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.