在将网站部署到服务器后,我遇到了访问课程的问题。 请注意,这是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
答案 0 :(得分:17)
右键单击App_Code中的源文件,并将其“Build Action”属性设置为“Compile”。
答案 1 :(得分:3)
正如它所说,错误意味着找不到那种类型。
可能的原因:
编译错误导致app_code文件夹中的.cs文件无法编译。当ASP.NET查看已编译的代码时,它找不到您要查找的类,从而导致错误。
.cs文件未部署到app_code。显然,如果源文件不在站点中,则无法编译它们。
权限问题阻止服务器加载.cs文件。
您的某个页面错误地引用了该类 - 可能是.cs或.aspx中的拼写错误,移动到新命名空间或重命名的类等。
基本上,无法找到,访问或编译源代码。
答案 2 :(得分:1)
很多时候在SVN中忽略bin目录(有充分的理由)所以最终发生的是本地(调试时)VS负责为你创建App_Code.dll。您需要做的是检查bin目录是否已部署到您的服务器计算机。如果不是,您可以通过使用部署网站或ftp副本等方式部署解决方案。
答案 3 :(得分:1)
属性Build Action是否在App_Code文件上设置为Compile?默认情况下,它不是Web应用程序项目。
答案 4 :(得分:0)
您是否在.aspx文件中部署.dll?