0

私のWebアプリケーション(ASP.NET v3.5 / C#)は、他のasp.netアプリケーションを動的に作成します(aspx、aspx.cs、クラス、web.config、project.csprojファイルなどを作成します)。

IISで「新しい」アプリケーションフォルダーをAPPLICATIONとして構成した後でも、それを参照しようとすると、次のパーサーエラーが発生しますCould not load type 'Template48.Template48'(ここで、Template48は私のアプリケーションです)。

新しいアプリケーションフォルダを手動で参照して再構築すると、すべてが完全に機能します。

このアプリケーション全体をフォルダ内で再コンパイルするにはどうすればよいですか?

前もって感謝します、

ギャル。

4

1 に答える 1

1

Webアプリケーションは、動作する前にコンパイルする必要があります。これはWebサイトとは異なります。

ソースを提供するだけでは十分ではありません。実際、ASP.NETは、アプリケーションを実行するためにソース(aspx.cs)を必要とせず、.aspx、web.config、および.dllファイル(.NET用語では「アセンブリ」)のみを必要とします。誤ってソースを漏らしたり、攻撃者にサイトの内部動作に関する情報を提供したりしないように、本番システムからソースを削除することも良い習慣と考えられています。

これを機能させるには、コマンドラインC#コンパイラを呼び出して、プロジェクトをその場でビルドする必要があります。これにより、必要な.dllファイルが生成されます。

別の、しかしはるかに難しいルートは、実行時にILを放出する.NET機能を使用することです。この機能を使用すると、コンパイラーを経由せずに直接アセンブリーを作成できます。ただし、これはかなり困難であり、これを実現するにはILを完全に理解する必要があります。

于 2010-08-01T11:50:53.263 に答える