3

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

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

我是<添加程序集标签还是<添加类型?

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

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

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

新问题:有什么方法可以不让 MyFolder 成为一个应用程序,并且仍然让它正常运行?我听说过“codesubdirectories”标签,它有用吗?我应该把它放在哪里?谢谢。

4

6 回答 6

2

在网站中,您的 App_code 文件夹中不需要名称空间。无需进入 web.config 即可引用 app_code 文件夹中的类。

于 2009-03-23T01:45:15.520 回答
2

这是首次引入 asp.net 2.0 网站时出现的动态编译的那些记录不充分的方面之一。

但是,对于您的特定问题的实际答案将需要您告诉我们更多关于您正在尝试对 App_Code 中的类做什么。大多数时候,您不必担心命名空间或程序集名称即可在页面中使用这些类。您只需使用类名,编译器就会弄清楚并为您连接所有内容。

我遇到的最大例外是使用我放入 app_code 的 Web 控件时。对于那些您需要在 aspx 页面中使用 @Register 指令的人...并且为此您需要程序集名称和命名空间。

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

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

于 2009-03-23T06:30:14.633 回答
2

Check the properties of the code file in Solution Explorer.

I had a situation where one of the .cs code files had "Content" selected for the Build Action. All the other files in App_Code were compiling fine but not this one.

Changed the Build Action to "Compile" and it started working as expected.

于 2009-06-15T22:06:03.847 回答
1

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

于 2009-03-23T01:45:54.550 回答
1

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

/App_Code
/MyFolder
/MyFolder2
/MyFolder3

这可能会解决您的问题。

您还可以查看 Scott Guthrie 的提示/技巧:

使用 VS 2005 Web 应用程序创建子 Web 项目

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

Looking at the CodeSubDirectories config element - you probably could use this - it would need to be defined in the root web.config I guess.

Also, note that the <assembly> references only need to contain version, culture and public key details if the assemblies are strongly named (and so have those values).

于 2009-03-23T14:05:35.660 回答
0

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

于 2009-03-23T06:44:13.163 回答