App_Code和web.config

时间:2009-03-23 01:39:44

标签: asp.net web web-config app-code

假设我在App_Code中有一个类(MyClass.cs)(使用ASP.NET网站,而不是项目)。没有为该类分配名称空间。

如何让该类在网站.aspx页面中有效?我需要在web.config文件中添加什么?我需要将它放在哪里?

我是否<添加汇编代码或是否< add type ??

由于程序集标记需要版本,文化和公钥,我不确定这些值在编译时是什么。

我只是添加一个类型标签吗?我在哪里把它放在web.config中?

修改 好的,我找到了部分答案。我收到错误是因为“http://localhost/MyFolder”未在IIS中设置为“应用程序”。但是,我有一个文件夹BUNCH,“http://localhost/MyFolder2http://localhost/MyFolder3等...

新问题:有没有办法让MyFolder成为一个应用程序,仍然可以让它正常运行?我听说过“codesubdirectories”标签,这是有用的,我会把它放在哪里?感谢。

6 个答案:

答案 0 :(得分:2)

在网站中,App_code文件夹中不需要名称空间。没有什么需要进入你的web.config来引用app_code文件夹中的类。

答案 1 :(得分:2)

这是动态编译中记录不足的一个方面,当asp.net 2.0网站首次推出时,这些方面就出现了。

对于您的具体问题的实际答案,但需要您告诉我们更多关于您在App_Code中尝试使用该类的具体信息。大多数情况下,您不必担心命名空间或程序集名称在页面中使用这些类。你只需使用类名,编译器就会把它想出来并为你解决所有问题。

我遇到的最大例外是使用我在app_code中添加的网页控件。对于那些在aspx页面中需要@Register指令的人......为此你需要一个程序集名称和命名空间。

app_code中的文件被编译成名为“__code”的程序集(请注意,这有两个下划线,而不是一个)。当你需要Register指令的程序集名称或web.config或者不需要时,可以使用这些。

但是,据我所知,除非您已在命名空间块中显式包装该类,否则您将无法在注册指令或某些需要命名空间的web.config设置中使用类。

答案 2 :(得分:2)

在解决方案资源管理器中检查代码文件的属性。

我有一种情况,其中一个.cs代码文件为Build Action选择了“Content”。 App_Code中的所有其他文件都编译得很好但不是这个。

将Build Action更改为“Compile”,它开始按预期工作。

答案 3 :(得分:1)

我认为你根本不需要做任何事情。这就是网站“项目”的工作方式。 App_Code中的任何内容都会被编译。

答案 4 :(得分:1)

通过编辑,您是否尝试将App_Code文件夹移动到网站的根目录?

/App_Code
/MyFolder
/MyFolder2
/MyFolder3

这可能会解决您的问题。

你也可以看一下Scott Guthrie的提示/技巧:

  

Creating Sub Web Projects using the VS 2005 Web Applications

虽然这确实使用了Web应用程序项目,而不是网站。

查看CodeSubDirectories配置元素 - 你可能会使用它 - 它需要在root web.config中定义。我想。

另外,请注意< assembly>如果程序集具有强名称,那么引用只需要包含版本,文化和公钥详细信息(并且具有这些值)。

答案 5 :(得分:0)

检查以确保课程是公开的,也许?