5

Webロールを定義するときに、 <WebRole><Sites>elementの下にサイトを指定できます。サイトの1つに名前を付けることができるので、名前"Web"を指定する必要はありません。physicalDirectory代わりに、サイトのコンテンツがsitesrootフォルダーにコピーされapproot、サービスパッケージのコンテンツが複製されて拡張されます。

したがって、これは簡単なことのように見えます。自分のサイトに他の名前を付け"Web"て指定する必要がありますphysicalDirectory。これで問題なく動作し、重複することなく、パッケージが小さくなります。

サイトに名前を付けることで得られるものはあります"Web"か?否定的な結果を考えると、なぜ名前を付けたい"Web"のですか?

4

2 に答える 2

4

「Web」サイトは、クラウドプロジェクトにWebRoleを追加するときに作成した新しいプロジェクトまたは選択した既存のプロジェクトです。したがって、WebRoleのデフォルトサイト(Web)は、そのWebプロジェクトに直接マップされます。

これは単に、RoleEntryPoint(WebRole.cs)にそのプロジェクトのアセンブリを使用することを意味します。そのため、そのプロジェクトの出力は、approot(RoleEntryPointが実行される場所)とsitesroot(IIS Webサイト)で使用されます。

これで、パッケージを小さく保ちたい場合は、WebRole.cs部分のみに機能するダミーサイトを作成し、それ以外に実際のサイトを作成できます。これにより、Azureにデプロイするときに3つの「フォルダー」が作成されます。

  • approot=>ダミーサイトを含む非常に小さなディレクトリ
  • sitesroot \0=>ダミーサイトを含む非常に小さなディレクトリ
  • sitesroot \1=>実際のサイト

エンドポイントを操作して、ダミーサイトに内部エンドポイントを指定して、ダミーサイトが公開されていないことを確認します。

  <WebRole name="MyWebRole" vmsize="Small">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="DummyEndpoint" />
        </Bindings>
      </Site>
      <Site name="RealWebApplication" physicalDirectory="..\MvcApplication1">
        <Bindings>
          <Binding name="Endpoint2" endpointName="RealEndpoint" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="RealEndpoint" protocol="http" port="80" />
      <InternalEndpoint name="DummyEndpoint" protocol="http" />
    </Endpoints>
    ...
  </WebRole>

そして、ダミーのWebアプリケーションは次のようになります。

ここに画像の説明を入力してください

于 2012-08-10T08:54:12.893 に答える
3

Web数か月後、サイト名を明示的に指定する以外の名前に変更しても問題は見つかりませんでしたphysicalDirectory。それはうまくいきます。

Azureツールのデフォルトが不合理であるように見えます。小さく.cspkgなったので、準備や荷降ろしにかかる時間が減り、無駄な時間が大幅に減りました。これをもっと早く見つけたらいいのに。

于 2013-03-01T12:37:23.383 に答える