2

我有一个包含 2 个文件的网站,如下所示:

  • 页面.aspx
  • page.aspx.cs

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

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

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

现在我收到错误:“无法加载类型命名空间.classname”,它指的是我的页面类。

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

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

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

有任何想法吗?

4

1 回答 1

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?检查“编译”标签。我不确定你可以在那里做什么来导致这种情况,但我相信你可能会造成一些混乱。

于 2009-11-05T01:24:30.460 回答