3

テスト サーバーへの devfabric デプロイ (csrun) のためにビルド サーバーで cspack を使用して Azure デプロイ パッケージをビルドしようとしています。cspack は Web ロールのバイナリとファイルを csx パッケージに忠実にコピーしますが、「RoleModel.xml」ファイルに埋め込まれている各 Web ロールの「sitePhysicalDirectory」パスも必要とします。このディレクトリは、パッケージ時に存在する必要があります。

デプロイ時に、csrun は、sitePhysicalDirectory パスを直接指す IIS サイトをセットアップし、csx パッケージにパッケージ化された Web ロール バイナリを完全に無視するように見えます。言うまでもなく、別のマシンでのテスト展開は機能しません。

ここで何か不足していますか?cspack/csrun が IIS の物理パスを csx パッケージの approot に設定できないのはなぜですか? パッケージ化されたバイナリが使用されない場合、csx パッケージの目的は何ですか? 運用環境の Azure デプロイで、sitePhysicalDirectories は何をしますか?

4

3 に答える 3

6

これらすべての質問に対する答えは、「cspack/csrun は設計が不十分で、決して出荷してはならないゴミの山だからです」と考え始めています。これらは、Visual Studio のサポート用に構築されているように見えますが、他には何もありません。

パッケージ化後に RoleModel.xml ファイルを手動で更新して、physicalPath 属性を「approot」に設定する (RoleModel.xml の場所に関連する) ことが実行可能な回避策のようです。

于 2011-05-17T14:29:49.170 に答える
2

これの一部は、完全な IIS の追加に関係していると思います。以前は、Windows Azure の approot ディレクトリが RoleEntryPoint プロセスと IIS WAS ホスト (同じもの) の両方に使用されていました。ただし、完全な IIS では、w3wp.exe が Web コードを実行し、WaWorker プロセスが RoleEntryPoint を実行します。

Web サイト全体 (WebRole.cs RoleEntryPoint も含む) を新しいディレクトリに効果的にコピーし、そこに完全な IIS をルートすることが決定されました。そのため、Web ロールのパッケージには実際にはコードのコピーが 2 回含まれていることに気付くでしょう。Web サイト用に 1 回、WebRole.cs RoleEntryPoint 用に 1 回。あなたの RoleEntryPoint だけが approot から実行されます。これが発生した技術的な理由をすべて覚えているわけではありませんが、依存関係を失う危険を冒すよりも、Web サイトをコピーする方が簡単で安全だった可能性があります。

于 2011-05-18T15:47:32.920 に答える
1

sitePhysicalDirectoryWebロールのバイナリとファイルのソースではなく、csxパッケージのAppRootの下のフォルダーとして設定する必要があると思います。

于 2011-09-26T18:37:23.113 に答える