VS2010プロジェクトへの外部アクセス用にIIS Expressを構成する


103

私はVS2010でプロジェクトを開発しており、IIS Expressを介して自分のサイトをローカルで表示できます。ネットワークを介した外部アクセスを有効にしたい。

:すべての私の研究では、このブログのエントリに私を送ったhttp://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx、便利ですが、ありませんVisual Studioで開始したプロジェクトのバインディングを構成する方法を示していないようです(スクリーンショットで画面が見つからず、applicationhost.configでバインディング情報を編集しましたが、からサイトを実行すると反映されないようですビジュアルスタジオ)。


10
Scott Hanselmanのブログ投稿hanselman.com/blog/…
12:52

回答:


136

1 applicationhost.configファイル(ドキュメントのIISExpressフォルダーにあります)を編集すると、サイトバインディングは次のようになります。

<bindings>
  <binding protocol="http" bindingInformation="*:8080:*" />
</bindings>

バインディングは3つの部分で構成されています。まず、IPアドレスまたはリスト、またはこの場合はワイルドカード。2番目にポート番号、3番目にホスト名、リスト、またはワイルドカード(Hostヘッダーによるフィルタリング用)。開発目的では、一意のポートを使用する可能性が高いため、ワイルドカードが最適です。

2非localhostバインディングを使用しているため、追加の権限が必要です。管理者としてVSを実行するか、URL ACL追加して必要な権限を付与することをお勧めします。以下の例では、すべてのユーザーに権限が付与されていますが、独自のユーザー名を使用することもできます。

注:urlacl必須では正確にバインディングに一致します。したがって、urlaclfor http://*:8080はのバインディングを許可しますが、後者が前者のサブセットであっても、のバインディングは許可し*:8080:*ません*:8080:localhostつまり、ワイルドカードを使用する代わりに、にホストヘッダーをリストする場合、それぞれにapplicationhost.config一致urlaclを追加する必要があります。

外部トラフィック用にHTTP.sysを構成する手順は、予約済みポートを使用するようにサイトを設定する場合と同様です。Windows 7またはWindows Vistaでは、管理者特権のコマンドプロンプトから次のコマンドを実行します。

netsh http add urlacl url=http://*:8080/ user=DOMAIN\username

Windows XPでは、管理者特権のコマンドプロンプトから次のコマンドを実行します。

httpcfg set urlacl /u http://*:8080/ /a D:(A;;GX;;;WD)

注2管理者としてVSを実行するか、ACLエントリを追加しても問題が解決しない場合は、コマンドラインからIIS Expressを実行し、バインド登録の失敗メッセージがないかどうかを確認します。コマンドラインから開始するには、次のコマンドを入力します。

iisexpress.exe /site:"your-site-name"

3最後に、適切なファイアウォールエントリが必要です。このためには、「セキュリティが強化されたWindowsファイアウォール」コンソールを使用するのが最も簡単です。

[受信の規則]で[新しい規則...]を選択します。

  • ルールタイプは「カスタム」です。
  • プログラムはServices-> Customize ...-> Apply to services onlyです。(IIS Expressはサービスではありませんが、使用するHTTPマルチプレクサはサービスです)。
  • プロトコルはTCPです
  • 特定のポート:すべてのIIS Expressバインディングのすべてのポートをリストします。このルールに戻って、いつでもポートを追加できます。(これが面倒になる場合40000-65534は、Visual Studioで使用される範囲全体をカバーするような範囲を追加する可能性がありますが、これは安全性が低いことに注意してください)。
  • アクションは「接続を許可する」です
  • プロファイルは次のいずれかになります。疑問がある場合は、「ドメイン+プライベート」を選択してください。
    • 「ドメイン」、あなたがあなたの会社のデスクトップであり、ローカルドメインでのみ実行される場合
    • 「ドメイン+プライベート」あなたが非企業環境のプライベート開発マシンである場合、または自宅で仕事をするときにも動作する必要がある企業のラップトップの場合。
    • 「ドメイン、プライベート、パブリック」。非プライベートネットワークでデモを行う必要がある場合。
  • 名前は「IIS Express Dev Server」のようなものでなければなりません

12
@ user578913そこで、実行中のIIS Expressタスクバーを開いてクリックし、次に構成ファイルへのリンクをクリックして、正しいapplicationhost.configファイルを見つけました。2行目のポートを1063に設定しました。これは、最初の行が設定されていたものだからです。コマンドラインを実行すると、すべてが問題なく見えました。私がに行くとき、マシン名またはマシン名:1063、ネットワーク上の別のマシンから、私はまだ何も得ます。
snumpy

15
はい、Visual Studioがポート(8080以外)を割り当てるため、Windowsファイアウォールがポートをブロックしていました。Windowsファイアウォールをオフにして(おそらくポートを開くことはできますが、セキュリティで保護されたネットワーク上にいます)、マシン名ではなくマシンのIPを使用したところ、問題なく動作しました。ありがとう。私は投票しますが、まだ担当者がいません=(
snumpy

3
はい。Windowsファイアウォールを有効にする必要がある場合は、TCPポート8080(または使用するポート)を明示的に追加します。Windows 7では、最初に「IIS Express Worker Process」にポートを割り当ててみました。しかし、それはうまくいきませんでした。「新しいルール」オプションを使用してポート8080を許可する必要がありました。プロファイル(ドメイン、プライベート、パブリック)の選択も重要です。
Gautam Jain

2
注意事項:アクセスが拒否された場合は、Visual Studioを管理者として実行してください。
nVentimiglia 2013年

3
VS2015以降、ファイルの場所はC:\<Path\To\Solution>\.vs\config\applicationhost.configです。(ありがとう、@ Talon)
snumpy 2015

29

私はこの問題にも何時間も費やし、自分のAndroid Xoomから自分のwin7開発マシンにアクセスして、作成した新しいasp.net Webアプリをテストできるようにしました。私が行ったのは、新しいサイトのIISExpressのapplicationhost.configをPCのHostNameからPCの現在のIPアドレスに変更することだけでした。

<binding protocol="http" bindingInformation="*:80:dev-Lee" />

<binding protocol="http" bindingInformation="*:80:192.168.1.102" /> 

これを実行してIISExpressを再起動したら... dev-Leeマシンを参照して、Xoomからアプリを表示できました。


10
これらのすべてのソリューションで得られるのは、エラー400-Bad Requestだけです。助言がありますか?
Krumelur 2013

2
@Krumelur、正しいapplicationhost.configファイルを編集してください。マイドキュメントフォルダにあるもの。
Codler 2014年

14

IIS Expressのapplicationhost.configを編集して、複数のバインディングアドレスを追加できます

<bindings>
   <binding protocol="http" bindingInformation="*:62217:localhost" />
   <binding protocol="http" bindingInformation="*:62217:192.168.0.5" />
   <binding protocol="http" bindingInformation="*:62218:192.168.0.5" />
</bindings>

これで、IPアドレスを使用してLANからWebサイトにアクセスできます。

IIS Expressを使用してLANからローカルサイトにアクセスする


6

Visual Studio 2013 SP1以降(2015)には、「サーバー設定をすべてのユーザーに適用する(プロジェクトファイルに保存)」という設定が含まれています。これはデフォルトで有効になっています。有効にすると、Visual Studioはコマンドライン引数を使用してIIS Expressを起動し、別の構成ファイルを使用します。「applicationhost.config」ファイルの場所は、「。vs \ config」のプロジェクトディレクトリの下です。


1
うん、それは私の場合の問題でした-間違ったファイルを編集しようとしました。たまたま、トレイアイコンをクリックし、すべてのアプリを一覧表示して選択することで、IIS Expressアプリの構成がどこにあるかを確認できます。設定ファイルへのパスは以下のようになります。私は.vs \ configにいました
evilkos

1
はい、私も同じです。どうもありがとうございました。
Vas


1

Visual Studioを使用している場合は、次の手順に従って、IIS-Express over IP-Adressにアクセスします。

  1. ホストのIPアドレスを取得する:ipconfigWindowsコマンドライン
  2. GoTo $(SolutionDir).vs \ config \ applicationHost.config
  3. 探す
    <site name="WebApplication3" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" /> </application> <bindings> <binding protocol="http" bindingInformation="*:62549:localhost" /> </bindings> </site>
  4. 追加: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    IPアドレス
  5. 管理者権限でVisual Studioを実行すると、すべてが機能するはずです。
  6. リモートから接続しようとした場合、ファイアウォールの問題を探している可能性があります

手がかりは、Visual Studioが独自のapplicationHost.configファイルを取得したことです。


0

これをVisual Studio 2012から機能させるのに多くの問題があり、404エラーから503エラーになりました。最終的に私のために働いたのは、IIS Express構成のすべての関連構成を一掃することでした...

"\Program Files (x86)\IIS Express\appcmd.exe" list site
"\Program Files (x86)\IIS Express\appcmd.exe" delete site xxx
"\Program Files (x86)\IIS Express\appcmd.exe" delete site yyy

次に、VSのWebプロジェクトのプロパティページから新しい仮想ディレクトリを作成しましたが、仮想ディレクトリを作成する前に、ホスト名をhttp:// myhost:80 /に変更してから、[仮想ディレクトリの作成]ボタンをクリックしました。以前は、ホスト名は「localhost」でなければならないというエラーが発生していましたが、今回はそうではありませんでした。そしてその後、それはうまくいきました。

手短に言えば、最初に既存の構成をクリアして、もう一度やり直してください。


-2

外部ドメインが「name.mydyndns.com」の場合は、次のように記述する必要があります。

<binding protocol="http" bindingInformation="*:name.mydyndns.com" />

これは、Windows 2003 ServerおよびIIS 7.5 Expressで機能します。


-3

スクリーンショット

IISのアプリケーションプールで、「32ビットアプリケーションを有効にする」を「true」に設定します。


これが実際に問題を解決しているのかわかりません。これを別の質問に投稿するつもりでしたか?
ckittel 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.