3

共通のマークアップ セットを共有する必要があるアプリケーションがいくつかあります。

シナリオ: www.site1.com、www.site2.com、および www.site3.com があるとします。すべてのサイトで、/care/contact-us.aspx と /care/faqs.aspx はまったく同じですが、他のすべてのページはまったく異なります。

問題: これらの各サイトの .aspx ファイルを複製しないようにしていますが、各サイトが使用する contact-us.aspx と faqs.aspx を含む /care 仮想ディレクトリが必要です。Scott Gu からのこの投稿を見ましたが、他の解決策/アイデアを探しています。

質問 1: /care ディレクトリを共有するように設定するには、どのような方法が最適ですか? 質問 2: コード ビハインドも共有することについてのアイデア。

背景: レガシー アプリケーション (asp クラシック/vbscript) では、サイトに /common 仮想ディレクトリを使用して、共通のマークアップとコードを共有することができます (それらはすべて .asp ファイルに混在しているため)。

助けやアイデアを事前にありがとう!

4

3 に答える 3

1

同じ物理ディレクトリを指すアプリケーションごとに、IIS で仮想ディレクトリをセットアップするだけです。

ここに良いリファレンスがあります:

http://support.microsoft.com/kb/324785

于 2010-02-02T21:56:24.827 に答える
1

これは実際にはかなり難しいので、弾丸をかじって scott gu の回答を使用するか、私たちが選択した解決策を使用することをお勧めします。これは、subversion 内で svn:externals プロパティを使用して「共有」ディレクトリからディレクトリをインポートすることでした。リポジトリ。 Subversion マニュアル リファレンス。別のバージョン管理システムを使用している場合は、似たようなものになると思いますが、その場合は自分で行ってください。

于 2010-02-02T22:26:11.290 に答える
0

サイト間で HTML ファイルと画像ファイルを共有するために、仮想ディレクトリを使用しています。ASPX ファイルを共有するには、事情が少し異なり、さらに難しくなります。

HTML ファイルを共有する場合、そのファイルにリンクするだけではメニューが台無しになります (サイトによってメニューが異なります。HTML ファイルのコンテンツが必要なだけです)。そこで、HTML ファイルを開き、コンテンツを文字列として読み取り、その文字列を ASP ラベル コントロールに割り当てるページ (たとえば、"ShowContent.aspx") を作成しました。共有 ASPX ファイルでコンテンツを動的に生成しない場合、これはそのまま機能する可能性があります。

たとえそうだとしても、希望は失われません。まず、一般的な ASPX ファイルのみを組み込んだプロジェクトを作成し、それをビルドして、プロジェクト ファイルを既知の場所 ( http://shared.yoururl.com ) に配置します。ここで、ファイルにアクセスしてコンテンツをプルする代わりに、WebRequest オブジェクトを使用してコンテンツを読み取るだけです。

        WebRequest wrContent = WebRequest.Create("http://shared.yoururl.com/CommonInformation.aspx");
        Stream objStream = wrContent.GetResponse().GetResponseStream();
        StreamReader objStreamReader = new StreamReader(objStream);
        string pageContent = objStreamReader.ReadToEnd();

次に、空白のページに pageContent を表示します。

共通ページがデータ入力フォームである場合、複数のプロジェクトが共有する共通ソース ディレクトリにページを配置することが唯一の希望です。ソースは共有しますが、各プロジェクトでファイルを公開します。ただし、これは厄介な可能性があります。相互依存の可能性があるため、他のプロジェクトを壊すような変更を加える可能性があります。

于 2010-02-02T22:01:39.760 に答える