1

私の会社の共有ホスティングプラットフォームにアクセスするWebアプリケーションがあります。そのプラットフォームには、プラットフォーム上のすべてのアプリケーションがインクルードファイルを使用して消費するグローバルヘッダー/フッターコードがあります。ヘッダーファイルの構造と使用方法を変更することはできません。これは、別のグループによって指示されています。設計上IISがインストールされていないビルドサーバーがあります。ビルドプロセス中にaspnet_compiler.exeを使用して、展開用にプリコンパイルされたWebサイトファイルを生成しようとしています。

ただし、ビルドを実行すると、次のようなエラーが発生します。

/Company/Controls/Header.ascx(7):エラーASPPARSE:パス'/sites/header.inc'のマップに失敗しました。

Header.ascxコントロールには、次のサーバーサイドインクルードがHTMLに含まれています。

<!-#include virtual = "/ sites / header.inc"->

ローカルマシンで、グローバルヘッダーコードを指す「sites」という名前の仮想ディレクトリをIISに作成しました(これもローカルマシンにコピーしました)。これと同じ「サイト」仮想は、ホスティング環境のIISに存在します。ビルドマシンは共有ビルドマシンであり、IISの依存関係を誤ってコードに組み込むことはないため、ビルドマシンにIISをインストールする必要はありません。ビルドマシンにはIISが必要ではありません。

IISをインストールせずに、ビルド中にaspnet_compiler.exeが生成するプリコンパイル済みサイトファイルを取得するための最良の方法は何ですか?

4

3 に答える 3

1

マイクロソフトは、インクルードステートメントを置き換える方法の非常に簡単な例を持っています...

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

エラーのパスを見ると、すでにある種のグローバル ユーザー コントロールを使用しているようです。これは、他のアプリケーションまたは言語によって再利用されるファイルであると推測されるため、エラー処理を備えたよりカスタム バージョンを考え出すことをお勧めします。マップされたドライブ上で動作しているためなどですが、基本的な答えは、Render イベント中にファイルを読み取ってストリームに出力する必要があるということです。

于 2009-12-12T00:30:09.447 に答える
0

サーバー側インクルードを使用しないでください。それらは古い技術であり、ほとんどの最新のサイトでは無効になっています。

代わりに、.ascx ファイルを作成して各 .inc ファイルを置き換え、代わりにそれらを使用することをお勧めします。

于 2009-12-12T00:22:20.247 に答える