解决办法:<%@PageCodeFile="***"Inherits="***" > 
这时候,ASP.net 就需要找 CodeFile 中指定的文件,以便动态编译,但是找不到,所以就报上述错误了。

对于开发时,即页面的逻辑代码 cs 文件存在的时候,下属两种写法都没有问题。
<%@ Page Language="C#" AutoEventWireup="true" 
Codebehind="index.aspx.cs" Inherits="Community.IndexHomePage.index" %>

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="Community.IndexHomePage.index" %>

但是部署到站点后,我们不会部署 cs 文件,这时候,后一种写法就会报找不到文件的错误了。除非你把 cs 也部署出去,否则就会报编译时错误,找不到文件...

 

InheritsCodeFileCodeBehind的区别

Inherits(继承)

Msdn解释:定义页面继承的代码隐藏类。它可以是从Page类派生的任何类。此特性与CodeFile特性一起使用,后者包含指向代码隐藏类的源文件路径。Inherits特性在使用c#作为页面语言时区分大小写。如果 Inherits 特性不包含命名空间,ASP.NET 将检查 ClassName 特性是否包含命名空间。如果包含,ASP.NET 将尝试使用 ClassName 特性的命名空间加载 Inherits 特性中引用的类。(这假定 Inherits 特性和 ClassName 特性使用同一命名空间。)

Inherits 属性用于定义当前 Web 窗体所继承的代码隐藏类(该类是 System.Web.UI.Page 的派生类)
这个 inherits 属性只用于采用代码隐藏方式编写的 Web 窗体,也就是,如果你的代码全都是在 Web 窗体的
<script runat="server"></script> 
标签中,就不必用这个属性了。

CodeFile 

msdn解释:指定指向页引用的代码隐藏文件的路径。此特性与 Inherits 特性一起使用,用于将代码隐藏源文件与网页相关联。此特性仅对编译的页有效。

此特性用于网站项目。

Codebehind

msdn解释:指定包含与页关联的类的已编译文件的名称。该特性不能在运行时使用。此特性用于 Web 应用程序项目。

Codebehind 属性并不是一个真正的 ASP.NET 属性,在ASP.NET 文档中是找不到它的。
它其实只是一个 Visual Studio .NET 属性,
Visual Studio .NET 
就是借用这个属性来很好地跟踪管理项目中的 Web 窗体和与之相对的代码隐藏文件,
比如当你在设计环境中往 Web 窗体上放入一个服务器控件时,
Visual Studio .NET 
将自动找到与该 Web 窗体相对应的代码隐藏文件,并自动插入相关的代码。