我在ASP中创建了一个网站。NET,并创建了一个类,并把它放在App_Code文件夹中。然而,我不能从我的其他页面访问这。是否需要配置一些东西来允许这一点?我在以前的项目中已经使它工作,但在这个项目中,不知何故。

namespace CLIck10.App_Code
{
    public static class Glob
    {
        ...
    }
}

当前回答

我发现将文件移动到一个单独的Class Library项目中,然后在web项目中引用该项目,并在文件的using部分应用名称空间更容易。 出于某种原因,其他的解决方案都不适合我,但这个解决方案却适合我。

其他回答

确保使用与页面相同的名称空间

把它放在你想要访问类的其他文件的顶部:

using CLIck10.App_Code;

或者像这样从其他文件访问类:

CLIck10.App_Code.Glob

不确定这是否是你的问题,但如果你是c#的新手,那么这是一个很容易被绊倒的问题。

更新:我最近发现,如果我在项目中添加了一个App_Code文件夹,那么我必须关闭/重新打开Visual Studio才能正确识别这个“特殊”文件夹。

我发现将文件移动到一个单独的Class Library项目中,然后在web项目中引用该项目,并在文件的using部分应用名称空间更容易。 出于某种原因,其他的解决方案都不适合我,但这个解决方案却适合我。

转到要从其中访问App_code类的页面,然后添加App_code类的名称空间。您需要提供一个using语句,如下所示:

using WebApplication3.App_Code;

之后,你需要转到app_code类属性,并将“Build Action”设置为“Compile”。

我还没有弄清楚为什么会发生这种情况,但我在我的App_Code文件夹中有类,它们在彼此中调用方法,并且在我构建. net 4.5.2项目时可以这样做,但后来我不得不将其恢复到4.0,因为目标服务器没有升级。那就是当我发现这个问题(在我的网页上修复了langversion后)。Config from 6 to 5…另一个故事)…

我的一个方法一直有这样的错误:

The type X.Y conflicts with the imported type X.Y in MyProject.DLL

我的所有类都已经在它们的属性中设置为“Compile”,正如这里接受的答案所建议的那样,每个类都有一个相同的公共名称空间,并且每个类都使用MyNamespace;在每门课的第一名。

我发现,如果我只是将必须调用彼此方法的违规类移动到另一个标准文件夹中,命名为“App_Code”以外的东西,它们就不会有这种冲突问题。

注意:如果你创建了一个名为“AppCode”的标准文件夹,将你的类移动到其中,删除“App_Code”文件夹,然后将“AppCode”重命名为“App_Code”,你的问题就会回来。不管你是使用“新建文件夹”还是“添加ASP . net文件夹”选项来创建“App_Code”,它似乎是在名称上输入的。

也许这只是一个。net 4.0(或者更早的版本)的问题…在不得不恢复之前,我在4.5.2中很好!