App_Code 和 web.config

问题描述 投票:0回答:6

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

如何使该类在网站 .aspx 页面中有效?我需要在 web.config 文件中放入什么以及我需要将其放在哪里?

由于程序集标记需要版本、区域性和公钥,因此我不确定编译时这些值是什么。

我只需添加类型标签吗?我应该把它放在 web.config 的哪里?

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

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

asp.net web-config app-code
6个回答
2
投票

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


2
投票

这是首次引入 ASP.NET 2.0 网站时出现的动态编译的记录不足的方面之一。

您的具体问题的实际答案需要您告诉我们更多关于您到底想对 App_Code 中的类执行什么操作。大多数时候,您不必担心名称空间或程序集名称即可在页面中使用这些类。您只需使用类名,编译器就会找出它并为您连接所有内容。

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

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

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


2
投票

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

我遇到过一种情况,其中一个 .cs 代码文件为构建操作选择了“内容”。 App_Code 中的所有其他文件都可以正常编译,但不是这个。

将构建操作更改为“编译”,它开始按预期工作。


1
投票

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

/App_Code
/MyFolder
/MyFolder2
/MyFolder3

这可能会解决您的问题。

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

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

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

查看 CodeSubDirectories 配置元素 - 您可能可以使用它 - 我猜它需要在根 web.config 中定义。

另请注意,如果程序集是强命名的(因此具有这些值),则 引用仅需要包含版本、区域性和公钥详细信息。


1
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.