プリコンパイル済みのASP.NET Webアプリケーション:エラー“ System.Web.HttpExceptionファイルfilename.aspxはプリコンパイルされていないため、要求できません。”
-
03-07-2019 - |
質問
Webサイトではなく、ASP.NET 3.5 Webアプリケーション用のVisual Studio 2008のテンプレートを使用してWeb配置プロジェクトを作成しました。
展開に必要なファイルを作成したプロジェクトをコンパイルしました。結果のフォルダー(bin、静的ファイル、aspxプレースホルダーなどのすべてのフォルダー)を、アプリケーションをテストするステージングサーバーにコピーしました。
"このプリコンパイルされたサイトを更新可能にする" オプションにフラグを付けない場合、ブラウザにロードするすべてのページでこのエラーメッセージが表示されます。
System.Web.HttpException file PAGENAME.aspx has not been pre-compiled, and cannot be requested.
スタックトレースの最後の行:
System.Web.Compilation.BuildManager.GetVPathBuildResultInternal( VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +8756366
オプションをチェックすると、すべてが正常です(実際のaspx / ascxが元の形式のままであるためだと思います)。
ここで何が欠けているのでしょうか?コピーするのを忘れた設定や特別なファイルはありますか?
ありがとう!
注:
- サードパーティのアセンブリへの参照がいくつかあります
- ステージングサーバーのbinフォルダーを確認しました。すべてのクラスを含むプリコンパイル済みアセンブリが含まれています(アセンブリを分析するためにReflectorを使用しました)。
解決
すべてのASPXファイルには
のみを含める必要がありますこれは、 プリコンパイルツール。 削除しないでください!
binフォルダー内のすべてを削除し、Webを再度公開します。 公開したディレクトリからファイルを取得するようにしてください。
binフォルダーに含まれる .compiled
ファイルも必ずコピーしてください。
他のヒント
記録のために、これらの「.compiled」をコピーするのを忘れました。ファイル( MSDNドキュメント:ASP.NETプリコンパイル中のファイル処理):
ASP.NET Webの実行可能ファイル用 アプリケーション、コンパイラアセンブリ および.compiledファイル名のファイル 拡張。アセンブリ名は コンパイラーによって生成されます。の .compiledファイルには含まれていません 実行可能コード。代わりに、含まれています ASP.NETという情報のみ 適切なものを見つける必要がある アセンブリ。
プリコンパイルされたアプリケーションが 展開され、ASP.NETはアセンブリを使用します 要求を処理するBinフォルダー。 プリコンパイル出力には次が含まれます プレースホルダーとしての.aspxまたは.asmxファイル ページ用。プレースホルダーファイル コードが含まれていません。彼らはにのみ存在します ASP.NETを呼び出す方法を提供します 特定のページ要求などのファイル 許可を制限するように設定できます ページへのアクセス。