App_Code之外的页面类将无法编译

时间:2009-11-03 13:13:31

标签: asp.net compilation app-code

我的网站有2个文件如下:

  • page.aspx
  • page.aspx.cs

过去我可以将新文件放到Web服务器上,IIS会自动编译文件,我可以访问该页面,例如。

http://www.website.com/page.aspx

... .cs文件中包含的页面类中的相关功能可以很好地工作。

现在我收到错误:“无法加载类型namespace.classname”,它引用了我的页面类。

现在出于一些奇怪的原因,我必须将所有.cs文件,甚至页面类放入app_code文件夹。

我网站上发生的所有变化都是我重新组织了结构,以便我的网页不在我的网页根目录上,而是在http://.../newfolder/page.aspx内。

出于某种原因,我的所有page.aspx.cs文件现在都必须在app_code中。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

听起来好像是在混淆Web应用程序项目和网站。

您确定文件完全相同吗?也许一个@Page指令说CodeBehind = Page.aspx.cs而另一个说CodeFile = Page.aspx.cs?

CodeBehind需要项目编译,所以你不能只是输入一个新的.cs文件,你需要上传一个新的编译DLL。 CodeFile将允许动态编译。

在访问您的应用程序时,App_Code目录是动态编译的(在这两种情况下),因此当您将文件放在那里时,Inherit指令具有有效类型。一般来说,不要这样做。您希望.cs文件与.aspx文件一起使用。将App_Code用于与特定页面无关的业务逻辑或实用程序类。

最后,这个新的子目录是否设置为IIS中的新应用程序?新目录中的web.config文件有何变化?您是否运行相同版本的ASP.NET?检查“编译”标签。我不确定你能做什么导致这种情况,但我相信你可能会导致一些混乱。