0

ウィンドウ azure で自分の Web サイトを実行しようとしています。ローカルでテストします。.csdefファイルは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="Test.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-10.1.8">
  <WebRole name="TestWebApplication" vmsize="Small">
    <Sites>
      <Site name="Web2" physicalDirectory="F:\MyPath\">

        <Bindings>
          <Binding name="Endpoint2" endpointName="Endpoint2" />

        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint2" protocol="http" port="8080"></InputEndpoint>

    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
</ServiceDefinition>

F5 キーを押してプロジェクトを実行すると、正常に実行されますが、ブラウザーでポート 8081 が使用されていることがわかりました。これがページの読み込みに失敗する主な原因です。

ポート 8081

ブラウザの URL を手動で修正し:8080、ファイルにあるポートを入力すると、.csdefページが正常に開きます。ページの読み込みでポートが使用される:8081理由。

4

1 に答える 1

1

説明するのは少し複雑になります。それを完全に理解するには、IISとサイトバインディングを比較的よく理解しているはずですが、試してみましょう。

まず、WindowsAzureコンピューティングエミュレーター。Windows Azureの展開の基本的な全体像は、こちらのブログ投稿から入手できます。基本的にload balancer、パブリックIPアドレス(VIP)といくつかのパブリックポートが開いた状態で、パブリックに公開されています。次に、ロールインスタンスを作成します。各インスタンスには、ロードバランサーからのリクエストをリッスンするために、独自のIPアドレス(DIP)とポートが開かれています。

Windows Azure Computeエミュレーターは、この構造全体をローカルに複製しました。ソフトウェアでエミュレートされたロードバランサーがあり、ロールのインスタンスごとに仮想IPアドレス(個別)を作成します。次に、他のプロセスで使用されていないローカルアドレス127.0.0.1とポートの「ロードバランサー」を公開します。次に、インスタンスごとにIIS(またはIIS Express)に個別のWebサイトを作成します(役割に定義されているサイトが1つしかない場合)。各サイトは、独自のIPアドレスとそのIPアドレス上の独自のポートにバインドされています。次に、エミュレートされたロードバランサーは、127.0.0.1で受信したトラフィックを、基になるロールインスタンス(この場合はさまざまなサイト)にラウンドロビンします。

これで、CSDFファイルの[サイト]セクションを編集すると、IISのカスタムサイトとバインディング情報が作成されます。サイトの標準とwell know名前は1つあり、それはWebです。Webという名前のサイト定義がある場合、IISのワイルドカードドメインにバインドされます。エミュレートされたロードバランサー上の127.0.0.1からのすべての要求は、Webという名前で定義されたWebサイトにのみリダイレクトされます。「Web」サイトはWebアプリケーションである必要があり、WebRoleに関連付けられているプロジェクトである必要があります。あなたの場合、あなたはWeb2を定義しています。これは機能しますが、次の制限があります。

  • hostHeaderを定義するときは、属性値を明示的に指定する必要がありますbinding
  • ローカルでデバッグする場合は、hostsファイルで指定した値を手動でマップする必要があります(-ファイルに拡張子なしで配置hostHeaderされ、管理者のみが編集できます)。127.0.0.1%windir%\system32\drivers\etc\hosts
  • F5キーを押すと、ブラウザが127.0.0.1でエラーのあるものをロードした後hostHeader、ブラウザが開いたままのカスタムポートを保持しながら、入力したカスタム値を手動で入力する必要があります。

その場合にのみ、ブラウザはサイトを適切にロードします。

ポート:8080を入力すると、Webサイトが正常に開くという事実は、ローカルのロードバランサーエミュレーターをスキップして、Webサイトに直接アクセスすることだけを示しています。

エミュレートされた環境でWebサイトプロジェクトを完全にテストする場合は、説明したプロセスを実行する必要があります。煩わしくない場合は、Webサイトを直接起動してデバッグするだけです。ただし、そうすると、RoleEnvironment変数と構成設定にアクセスできなくなります。

于 2012-12-14T08:05:03.900 に答える