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 应用程序需要在运行之前进行编译;这与网站不同。

仅提供来源是不够的;实际上,ASP.NET 不需要源 (aspx.cs) 来运行应用程序,只需要 .aspx、web.config 和 .dll 文件(.NET 术语中的“程序集”)。甚至认为从生产系统中删除源代码以避免意外泄漏源代码并为攻击者提供有关站点内部工作的信息是一种很好的做法。

为了使这项工作,您需要以某种方式调用命令行 C# 编译器来动态构建项目;这将生成所需的 .dll 文件。

一个不同但更难的方法是使用 .NET 在运行时发出 IL 的能力。使用此工具,您可以直接生成程序集,而无需通过编译器。不过,这非常困难,您需要彻底了解 IL 才能实现这一目标。

于 2010-08-01T11:50:53.263 回答