5

ASP.NET 3.5 Web アプリケーション (Web サイトではない) 用の Visual Studio 2008 のテンプレートを使用して、Web 配置プロジェクトを作成しました。

展開に必要なファイルを作成するプロジェクトをコンパイルしました。結果のフォルダー (bin、静的ファイル、および aspx プレースホルダーを含むすべてのフォルダーなど) を、アプリケーションをテストするステージング サーバーにコピーしました。

「このプリコンパイル済みサイトを更新可能にする」オプションにフラグを立てないと、ブラウザーにロードするすべてのページで次のエラー メッセージが表示されます。

System.Web.HttpException ファイル PAGENAME.aspx はプリコンパイルされていません。
となり、リクエストすることはできません。

スタック トレースの最後の行:

System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(
  VirtualPath virtualPath、ブール値 noBuild、ブール値 allowCrossApp、
  Boolean allowBuildInPrecompile) +8756366

オプションをチェックすると、すべて問題ありません (実際の aspx/ascx が元の形式のまま残っているためだと思います)。

ここで何が欠けているのか分かりますか? コピーするのを忘れた設定または特別なファイルはありますか?

ありがとうございました!

ノート:

  • サードパーティのアセンブリへの参照がいくつかあります
  • ステージング サーバーの bin フォルダーを確認しました。これには、すべてのクラスを含むプリコンパイル済みアセンブリが含まれています (リフレクターを使用してアセンブリを分析しました)。
4

2 に答える 2

7

すべての ASPX ファイルには、

これは、プリコンパイル ツールによって生成されたマーカー ファイルであり、削除しないでください。

bin フォルダー内のすべてを削除し、Web を再度公開します。パブリッシュを行ったディレクトリからファイルを取得していることを確認してください。

.compiledbin フォルダーに含まれるファイルも必ずコピーしてください。

于 2009-01-05T14:27:48.927 に答える
1

記録のために、これらの「.compiled」ファイルをコピーするのを忘れました(MSDNドキュメント:ASP.NETプリコンパイル中のファイル処理):

ASP.NET Webアプリケーションの実行可能ファイルの場合、コンパイラアセンブリと.compiledファイル名拡張子の付いたファイル。アセンブリ名はコンパイラによって生成されます。.compiledファイルには実行可能コードが含まれていません。代わりに、ASP.NETが適切なアセンブリを見つけるために必要な情報のみが含まれています。

プリコンパイルされたアプリケーションが展開された後、ASP.NETはBinフォルダー内のアセンブリを使用して要求を処理します。プリコンパイル出力には、ページのプレースホルダーとして.aspxまたは.asmxファイルが含まれます。プレースホルダーファイルにはコードが含まれていません。これらは、特定のページ要求に対してASP.NETを呼び出す方法を提供するためにのみ存在し、ファイルのアクセス許可を設定してページへのアクセスを制限することができます。

于 2009-01-05T14:55:28.933 に答える