asp.NET 2.0 Web站点无法访问App_Code中的类

时间:2011-01-12 18:05:22

标签: c# asp.net web

在将网站部署到服务器后,我遇到了访问课程的问题。 请注意,这是Web 站点而不是Web 应用程序。错误是:

编译器错误消息:CS0246:找不到类型或命名空间名称“Order”(您是否缺少using指令或程序集引用?)

版本信息:Microsoft .NET Framework版本:2.0.50727.1433; ASP.NET版本:2.0.50727.1433

我做了很多谷歌搜索,但却找不到任何有用的东西。

我的代码看起来像这样(我在声明Order的行上得到了编译器错误):

//Default.aspx.cs
namespace Foo
{
    public partial class _Default : System.Web.UI.Page
    {
        private Order custOrder;
        ....etc
    }
}

在App_Code文件夹中,我有Order.cs:

namespace Foo
{
    public class Order
    {
        ....etc
    }
}

奇怪的是,这在本地和开发环境中都可以正常工作。当我将它移动到qa环境时,那是我收到错误的时候。

我通过将所有代码提交到subversion存储库然后在服务器计算机上进行导出来进行部署。

我想这可能是某种命名空间错误,但我不知道它为什么会在某些机器而不是其他机器上运行。

知道在不同的服务器上可能会有什么不同吗?所有计算机都将.net版本报告为2.0

5 个答案:

答案 0 :(得分:17)

右键单击App_Code中的源文件,并将其“Build Action”属性设置为“Compile”。

答案 1 :(得分:3)

正如它所说,错误意味着找不到那种类型。

可能的原因:

  1. 编译错误导致app_code文件夹中的.cs文件无法编译。当ASP.NET查看已编译的代码时,它找不到您要查找的类,从而导致错误。

  2. .cs文件未部署到app_code。显然,如果源文件不在站点中,则无法编译它们。

  3. 权限问题阻止服务器加载.cs文件。

  4. 您的某个页面错误地引用了该类 - 可能是.cs或.aspx中的拼写错误,移动到新命名空间或重命名的类等。

  5. 基本上,无法找到,访问或编译源代码。

答案 2 :(得分:1)

很多时候在SVN中忽略bin目录(有充分的理由)所以最终发生的是本地(调试时)VS负责为你创建App_Code.dll。您需要做的是检查bin目录是否已部署到您的服务器计算机。如果不是,您可以通过使用部署网站或ftp副本等方式部署解决方案。

答案 3 :(得分:1)

属性Build Action是否在App_Code文件上设置为Compile?默认情况下,它不是Web应用程序项目。

答案 4 :(得分:0)

您是否在.aspx文件中部署.dll?