web-dev-qa-db-ja.com

LAN経由のVisual StudioデバッグIIS Expressサーバーへの接続

VS2012で開発されたテストASP.NET MVC3アプリケーションがあります。デバッグを開始すると、http://localhost:<portnumber>へのリクエストを介してホストマシンからアプリにアクセスします。しかし、http://<ip>:<portnumber>を介してイントラネットのリモートマシンから同じアプリケーションにアクセスしようとすると、HTTP error 400: Bad request. Invalid Host Name.を取得します。IIS Expressで実行する限り、サーバー構成にアクセスできません。

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

74
gator88

VisualStudio 2015非管理者

  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からデバッグを開始する
37
gregmac

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

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

19
shangkeyun

@Garret Fogerlieの投稿にコメントを追加することはできず、コメント作成者の問題(@ Y.Ecarriおよび@SamuelEdwinWard)に対応してコメントを追加できないため、Visual Studio 2013を使用してGarretが提案した内容に従い、管理モードで実行し、 application.configファイル。

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

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

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

10
hvaughan3

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

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

  1. %USERPROFILE%\My Documents\IISExpress\config\applicationhost.configを開きます
  2. name=MySiteNameを使用してサイトを検索します
  3. <binding>セクションの既存の<bindings>アイテムを複製します。これで、bindingを含む2行が表示されます。
  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
    

EDIT 2019:gregmacは、VSインスタンスをホワイトリストに登録するステップを追加しました。私はこれを必要としませんでしたが、とにかくそれをリストします:

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

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

1
carlo818

Byteitのおかげで:

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

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

追加:

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

既存の前に

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

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

1
Isaac Bolinger

Visual Studio Codeでのデバッグに非常に似た問題があった場合、以下を追加して解決しました。

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

.. tolaunch.json

どうやら、デフォルトではhttpプロトコルを「localhost:5000」にバインドするため、localhostで動作しますがでは動作しませんip address-リモートでもローカルでもありません。

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

お役に立てれば

0

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

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

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

0
SaiyanGirl

上記の構成の後、Visual Studioを管理モードで実行する必要がありました。

enter image description here

0
Arun Prasad E S