Bin 和 App_Code 文件夹

转载 2007年10月01日 12:58:00
如果您的 Web 应用程序包括要在多个页之间共享的代码,您可以将代码保存在 Web 应用程序根目录下的两个特殊文件夹(Bin 文件夹和 App_Code 文件夹)中的某个文件夹中。

Bin 文件夹

可以在 Bin 文件夹中存储编译的程序集,并且 Web 应用程序任意处的其他代码(如页代码)会自动引用该文件夹。典型的示例是您为自定义类编译好的代码。您可以将编译后的程序集复制到 Web 应用程序的 Bin 文件夹中,这样所有页都可以使用这个类。

Bin 文件夹中的程序集无需注册。只要 .dll 文件存在于 Bin 文件夹中,ASP.NET 就可以识别它。如果您更改了 .dll 文件,并将它的新版本写入到了 Bin 文件夹中,则 ASP.NET 会检测到更新,并对随后的新页请求使用新版本的 .dll 文件。

Bin 文件夹的安全性

将编译后的程序集放入 Bin 文件夹中会带来安全风险。如果是您自己编写和编译的代码,那么您了解代码的功能。但是,如果不是您自己编写和编译的代码,那么您必须像对待任何可执行代码一样来对待 Bin 文件夹中已编译的代码。在完成代码测试并确信已了解代码功能之前,要对已编译的代码保持谨慎的态度。

请注意以下安全方面的知识,这些知识与是否将已编译的代码放入 Bin 文件夹有关:

Bin 文件夹中程序集的作用范围为当前应用程序。因此,它们无法访问当前 Web 应用程序之外的资源或调用当前 Web 应用程序之外的代码。

运行时,程序集的访问级别由本地计算机上指定的信任级别确定。 

如果您使用了诸如 Visual Studio 这样的设计器,那么 Bin 文件夹中的代码运行所在的上下文与运行时不同。例如,代码可能以完全信任状态运行。 

App_Code 文件夹

可以在 App_Code 文件夹中存储源代码,在运行时将会自动对这些代码进行编译。Web 应用程序中的其他任何代码都可以访问产生的程序集。因此,App_Code 文件夹的工作方式与 Bin 文件夹很类似,不同之处是您可以在其中存储源代码而非已编译的代码。App_Code 文件夹及其在 ASP.NET Web 应用程序中的特殊地位使您可以创建自定义类和其他仅源代码文件,并在 Web 应用程序中使用它们而不必单独对它们进行编译。

App_Code 文件夹可以包含以传统类文件(即带有 .vb、.cs 等扩展名的文件)的形式编写的源代码文件。但是,它也可以包含并非明确显示出由某一特定编程语言编写的文件。例如 .wsdl(Web 服务发现语言)文件和 XML 架构 (.xsd) 文件。ASP.NET 可以将这些文件编译成程序集。

根据您的需要,App_Code 文件夹可以包含任意数量的文件和子文件夹。您可以采用任何您认为方便的方式组织源代码,ASP.NET 仍会将所有代码编译成单个程序集,并且 Web 应用程序任意处的其他代码都可以访问该程序集。

推断 App_Code 文件夹的编程语言

App_Code 文件夹并未显式标记为包含以任何一种编程语言编写的文件。相反,ASP.NET 是根据 App_Code 文件夹所包含的文件来推断应为 App_Code 文件夹调用哪一种编译器。如果 App_Code 文件夹包含 .vb 文件,则 ASP.NET 使用 Visual Basic 编译器;如果包含 .cs 文件,则 ASP.NET 使用 C# 编译器,以此类推。

如果 App_Code 文件夹只包含并未明确表明编程语言的文件(如 .wsdl 文件),则 ASP.NET 将使用 Web 应用程序的默认编译器,默认编译器在 Web 应用程序或计算机配置文件的 <compilation> 元素中确定。

在 App_Code 文件夹中使用多种编程语言

因为 App_Code 文件夹中的源代码要编译成单个程序集,所以 App_Code 文件夹中的所有文件必须使用相同的编程语言编写。例如,App_Code 文件夹不能同时包含采用 Visual Basic 和 C# 编写的源代码。 

但是,您可以对 Web 应用程序进行配置,使其将 App_Code 文件夹的子文件夹作为独立的可编译单元处理。这样,每一个文件夹就可以包含以不同编程语言编写的源代码。通过在 Web.config 文件的 <compilation> 元素中创建一个 <codeSubDirectories> 元素,然后添加一个对子文件夹的引用,即可指定该配置。下面的示例阐释如何对名为 VBCode 和 CSCode 的子文件夹进行配置,使其编译成不同的程序集:
 
 <compilation debug="false">    <codeSubDirectories>        <add directoryName="VBCode" />        <add directoryName="CSCode" />    </codeSubDirectories></compilation>
 
请注意,对 VBCode 和 CSCode 子文件夹的引用并未包括任何有关子文件夹中所包含的编程语言的信息。就像对待 App_Code 文件夹本身一样,ASP.NET 会根据子文件夹中的文件来推断要使用的编译器。

App_Code 文件夹的安全性

App_Code 文件夹中的代码存在的安全问题基本上与 Bin 文件夹中的代码存在的安全问题相同 - 代码都要编译成程序集并在运行时执行。比 Bin 文件夹要好一些的是,您可以阅读 App_Code 文件夹中文件的源代码。但是,如果您不能完全理解代码,仍然会存在安全风险。因此,对待 App_Code 文件夹中的源代码的态度必须像对待基于同样的源代码生成的已编译代码一样谨慎。
 
 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1496848

 

相关文章推荐

bin,app_code,app_data 等文件夹的作用

1.  Bin文件夹  Bin文件夹包含应用程序所需的,用于控件、组件或者需要引用的任何其他代码的可部署程序集。该目录中存在的任何.dll文  件将自动地链接到应用程序。如果在该文件夹中留有不用的或过...

VS2005 中 bin,app_code,app_data 等文件夹的作用

1.  Bin文件夹Bin文件夹包含应用程序所需的,用于控件、组件或者需要引用的任何其他代码的可部署程序集。该目录中存在的任何.dll文件将自动地链接到应用程序。如果在该文件夹中留有不用的或过期的文件...

ASP.NET项目中bin,app_code,app_data 等文件夹的作用

1.  Bin文件夹 Bin文件夹包含应用程序所需的,用于控件、组件或者需要引用的任何其他代码的可部署程序集。该目录中存在的任何.dll文  件将自动地链接到应用程序。如果在该文件夹中留有不用的或过期...

ASP.NET中bin app_code app_data等文件夹的作用

文件夹名称    文件类型    注        释    Bin     .dll     ...

App_Code文件夹下类的调用问题

有一个值得留意的小问题,就是在aspx的Code Behind文件aspx.cs中using App_Code的命名空间报错: //报错 //后来知道原来App_Cod...

ASP.NET中使用App_Code文件夹的异常

在Visual Studio中,新建一个网站有两种方式:ASP.NET Web Site与ASP.NET Web Application。与Web Site相比,Web Application有很多优...
  • keymo_
  • keymo_
  • 2012-05-24 15:58
  • 1534

开发ASP.NET如何将App_Code文件夹中的共享代码配置生成多个Dll

开发ASP.NET如何将App_Code文件夹中的共享代码配置生成多个Dll 最近在做一个ASP.NET 项目的二次开发,配好开发环境写了部分代码后进行编译,报了一个错:已经导入了具有相同的简单...

为什么vs2005建立的cs类要放在app_code文件夹才能在其他页面用?

2012年3月29日   天气有雨    日子是否太舒坦了,都没什么雄心啊壮志啊,给自己一巴掌!  很操蛋的问题,vs找不到命名空间了,原来是web网站类代码必须放在web_code...

ASP.NET中Bin,App_Browser,App_code,App_Data,App_Theme 等文件

原文在:http://hi.baidu.com/huojiujiu/blog/item/2574c5ecdc5a91da2e2e2120.htmlBin,App_Browser,App_code,Ap...

ASP.NET中App_Code,App_Data等文件夹的作用

1. Bin文件夹Bin文件夹包含应用程序所需的,用于控件、组件或者需要引用的任何其他代码的可部署程序集。该目录中存在的任何.dll文 件将自动地链接到应用程序。2. App_Browser文件夹该可...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)