11

現在、私が取り組んできたアプリケーションごとに、IIS Express で構成されたサイトがあります。それらはそれぞれ、ポート 80 および 443 でローカルに実行するように設定されていますが、これらのエイリアスがホスト ファイル内からローカルにポイントされている別のバインディング ( http://site1/およびhttp://site2/ ) があります。

IIS Express を (コマンド ラインから) 直接起動すると、これらのサイトを同時に起動できますが、デバッグが失敗した場合は VS2010 に起動させます。最初のサイトは正常に起動してデバッグされますが、2 番目に起動したサイトでは "IIS Express Web サーバーを起動できません。ポート '80' は使用中です" というエラーが発生します。

私が使用している IIS Express 構成は次のとおりです (プロジェクト名を削除するために少し変更されています)。

<site name="Site1" id="1" serverAutoStart="true">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="Site1Path" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:80:Site1" />
        <binding protocol="https" bindingInformation="*:443:Site1" />
    </bindings>
</site>
<site name="Site2" id="2" serverAutoStart="true">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="Site2Path" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:80:Site2" />
        <binding protocol="https" bindingInformation="*:443:Site2" />
    </bindings>
</site>

VS はポート 80 で現在リッスンしているものをチェックしているように見えますが、IIS Express はそのように制限されていません。コマンド ラインで開始された IIS Express のインスタンスに VS を接続することはできますが、VS でそれらを管理することをお勧めします。

これは VS2010 が IIS Express を処理する方法の制限ですか? もしそうなら、良い回避策は何ですか?

4

2 に答える 2

9

そうです...これはVS2010の制限です。次の回避策がうまくいくかどうかはわかりません。

以下に示すように、複数のアプリケーションを持つ単一のサイトを持つことができます。

<site name="MySite" id="1" serverAutoStart="true">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="SiteRoot" />
    </application>
    <application path="/Site1" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="Site1Path" />
    </application>
    <application path="/Site2" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="Site2Path" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:80:Site1" />
        <binding protocol="https" bindingInformation="*:443:Site1" />
    </bindings>
</site>

そして、次のようにアクセスできhttp://localhost/site1ますhttp://localhost/site2

于 2011-05-09T17:05:31.230 に答える