|
|奔日网技术学堂欢迎您
tech.8BR.NET|
所有的 ASP.NET 应用程序都使用 IIS 虚拟目录作为其应用程序根目录。本主题中的过程显示了如何在 IIS 中创建虚拟目录。
准备该过程
创建新目录。本次演练使用目录 C:\myWebApp。 接下来,打开 IIS 管理器,然后使用下面的过程创建虚拟目录。 在运行 Windows Server 2003 的计算机上创建虚拟目录
从“开始”菜单,指向“管理工具”,然后单击“Internet 信息服务 (IIS) 管理器”。 展开“本地计算机”,然后再展开“网站”。 右键单击“默认网站”,指向“新建”,然后单击“虚拟目录”。 在虚拟目录创建向导中,单击“下一步”。 在“别名”框中键入应用程序名称,然后单击“下一步”。 键入为准备这次演练而创建的物理目录路径 C:\myWebApp,然后单击“下一步”。 在“访问权限”页面中,选择您需要的应用程序的访问权限,然后单击“下一步”。 单击“完成”。
为 ASP.NET 应用程序创建目录结构 如何组织应用程序中包含的目录会影响到应用程序中的文件所包括的任何虚拟或相对路径。另外,如果应用程序使用本地编译代码,必须将 \Bin 目录直接包含在应用程序的根下。ASP.NET 将自动解析对存储在这里的组件的所有引用。
本主题中的过程解释了哪个目录会包含在 ASP.NET Web 应用程序的根目录中。接着对可能的目录结构稍加讨论,在本主题的末尾包含了带有可能的文件名的示例目录。
准备这次演练
如用 IIS 创建 ASP.NET 应用程序根目录所述,为应用程序创建根目录并将其标记为应用程序。 为 ASP.NET Web 应用程序创建目录结构
在命令提示符下或在 Windows 资源管理器中,打开创建的根目录。 创建一个新目录并将其命名为 Bin。 创建应用程序需要的所有其他目录。例如,可以创建一个目录以放置应用程序所包含的所有图像。 \Bin 目录是 Web 应用程序的默认程序集缓存。除非 Web 应用程序与另一个应用程序共享 DLL,否则会将应用程序使用的所有的 DLL 放在 \Bin 目录中,以确保包含在它们中的对象引用能够被正确解析。这些程序集中可以包含商业规则或已编译的自定义服务器控件。如果应用程序与其他应用程序共享程序集,可将共享的 DLL 放在全局程序集缓存中。详细信息,请参阅将共享组件部署到全局程序集缓存。
注意 当在 Visual Studio .NET 环境中创建 ASP.NET Web 应用程序时,这些指令并不应用于由 Visual Studio .NET 编译的程序集。有关使用 Visual Studio .NET 部署开发的 Web 应用程序的信息,请参阅 Visual Studio 帮助。
如果要修改 Web 应用程序的默认配置,请创建 Web.config 文件,进行所期望的修改,然后将其保存在根目录中。详细信息,请参阅 ASP.NET 配置。
另外,如果要编写所有应用程序范围内的函数(其中包括用于 Application_Error 事件的处理程序),请将其放在 Global.asax 文件中并把该文件保存在应用程序根目录中。详细信息,请参阅 .NET Framework 帮助中的“ASP.NET 应用程序”主题。
在下例的目录结构中,C:\myWebApp 是应用程序的根目录。要使应用程序工作正常,myWebApp 目录必须是 IIS 虚拟目录。
注意 此示例应用程序包括了 \Bin 目录和存储与应用程序相关的图像的 |Img 目录。实际的目录结构可能比这个更复杂一些。
c:\myWebApp Default.aspx Menu.ascx Service.asmx Web.config Global.asax \Bin myBizLogic.dll \Img myImage.gif
部署本地应用程序组件 ASP.NET 应用程序组件是应用程序用于执行各种任务的所有 DLL 文件。这些组件可以包括三层应用程序的商业规则和数据库访问规则,也可以包含已开发的自定义 ASP.NET 服务器控件。要用于应用程序,与这些组件相关的每个 DLL 都必须部署到应用程序的 \Bin 目录中。
从命令行中部署 ASP.NET 应用程序组件
从“开始”菜单,单击“运行”。 在“运行”对话框中的“打开”框中,键入 cmd,然后单击“确定”。 在命令提示符下,键入以下命令: xcopy <source path> <destination path>
注意 在此命令中,<source path> 是占位符,表示要部署的已编译组件的文件的完整路径,包括驱动器和目录名称。如果要复制目录中的所有文件,则可以忽略文件名。<destination path> 占位符表示应该放置文件的目录的完整路径。
下例中的命令将所有已编译组件从 C:\devApp\bin 目录复制到 D:\liveApp\bin 目录中。
xcopy c:\devApp\bin d:\liveApp\bin 回答有关要复制的文件或目录的所有问题。 下例将一个驱动器上 \Bin 目录中的单个 DLL 复制到另一个驱动器上的 \Bin 目录中。
xcopy c:\devApp\bin\myAssembly.dll d:\liveApp\bin从命令行中编译并将程序集部署到应用程序的 \Bin 目录中
从“开始”菜单,单击“运行”。 在“运行”对话框中的“打开”框中,键入 cmd,然后单击“确定”。 使用 cd 命令定位到想要的目录。该命令使用相对路径浏览计算机或网络中的目录和驱动器。 该命令使用的任何路径的根位置是本地驱动器,通常是 C:\。下面过程中所显示的示例假定已经定位到源文件所在的目录。使用下面的 cd 命令将命令提示符从本地驱动器根下两层子目录中直接转移到根下面的 myApp 目录中。
cd..\..\myApp 在命令提示符下,键入以下命令: csc /t:library /out: <destination path> <source path> vbc /t:library /out: <destination path> <source path> 注意 在该命令中,<destination path> 是一个占位符,表示由该命令编译的 .dll 文件的路径,<source path> 表示源文件路径。每个 <destination path> 应该包括 \Bin 目录以及分配给 .dll 文件的全名。<destination path> 和 <source path> 都是相对路径。
下例从命令行中编译来自 HelloObj.dll 或 HelloObj.cs 源文件的 HelloObj.vb。目标路径是一个相对路径,它从命令行当前所在的目录到使用 .dll 的 ASP.NET 应用程序的 \Bin 目录。源文件位于和命令行相同的目录中。
csc /t:library /out:..\..\..\..\bin\HelloObj.dll HelloObj.cs vbc /t:library /out:..\..\..\..\bin\HelloObjVB.dll HelloObj.vb
部署 ASP.NET 应用程序文件和本地组件 要部署 ASP.NET 应用程序,只需将开发计算机上创建的应用程序文件复制到将要主持应用程序的生产 Web 服务器上。可以使用 XCOPY 命令行实用工具或任何 FTP 应用程序将文件从某个位置复制到另一个位置。
要部署在 Web 应用程序范围内共享的程序集(例如包含自定义 ASP.NET 服务器控件的程序集),您必须将其部署到全局程序集缓存中。详细信息,请参阅 .NET Framework 帮助中的“全局程序集缓存”主题。
从命令行中部署 ASP.NET 应用程序文件
从“开始”菜单,单击“运行”。 在“运行”对话框中的“打开”框中,键入 cmd,然后单击“确定”。 在命令提示符下,键入以下命令: xcopy <source path> <destination path>
注意 在该命令中,<source path> 是占位符,表示要复制的源文件的完整路径,包括驱动器、目录和文件名。如果要复制目录中的所有文件,则可以忽略文件名。<destination path> 占位符表示应放置的复制文件的目录的完整路径。
下面示例中的命令将所有文件从 C:\myWebApp 目录复制到 D:\liveApp 目录中。
xcopy c:\myWebApp d:\liveApp 回答有关要复制的文件或目录的所有问题。 当要更新存储在应用程序 \Bin 目录中的 DLL 或要更新任何其他应用程序文件时,可以使用该过程。下面示例将某个驱动器上 \Bin 目录中的单个 DLL 复制到另一个驱动器上的 \Bin 目录中。
xcopy c:\devApp\bin\myAssembly.dll d:\liveApp\bin一旦部署了它,就可以使用该命令更新应用程序中的文件。尽管可以一次复制整个目录,但是单个文件必须每次复制一个。使用 XCOPY /exclude 选项,可以将子目录、带有特定的文件扩展名或特定的文件名排除在外,从而禁止复制它们。有关使用 XCOPY 工具的详细信息,请打开操作系统的帮助并搜索 XCOPY。
注意 使用 XCOPY 工具时必须使用物理路径名称。不能使用虚拟目录名称。
将共享组件部署到全局程序集缓存 如果计划在 Web 服务器上的两个或多个应用程序之间共享组件,则必须将组件部署到服务器上被称为全局程序集缓存的计算机范围代码缓存中。安装了公共语言运行库的每一台计算机都具有全局程序集缓存。全局程序集缓存存储了计算机上几个应用程序所共享的程序集。详细信息,请参阅 .NET Framework 帮助中的“全局程序集缓存”主题。
仅当需要时才通过将程序集安装到全局程序集缓存的方式来共享它们。一般指导原则是保持程序集依存关系的专用性,并将其放置在应用程序的目录中,除非明确需要共享程序集。程序集不必位于全局程序集缓存中以供 COM interop 或非托管代码进行访问。
注意 在有些方案中,不应该将程序集安装到全局程序集缓存中。如果将组成应用程序的某个程序集放到全局程序集缓存中,您将不能再通过 XCOPY 工具复制应用程序目录的方法来复制或安装应用程序。您还必须移动全局程序集缓存中的程序集。
有两种方法可以将程序集安装到全局程序集缓存中。
使用 Microsoft Windows Installer 2.0。 这是推荐的、最通用的将程序集添加到全局程序集缓存中的方法。安装程序提供了全局程序集缓存中的程序集引用计数以及其他优点。只有当安装到开发或测试服务器时,才不应使用安装程序。
使用全局程序集缓存工具 (Gacutil.exe)。 可以使用 Gacutil.exe 将具有强名称的程序集添加到全局程序集缓存中,并查看全局程序集缓存中的内容。
注意 Gacutil.exe 仅用于开发目的,不应被用于将程序集产品安装到全局程序集缓存中。
详细信息,请参阅 .NET Framework 帮助中的“全局程序集缓存工具 (Gacutil.exe)”主题。
将具有强名称的程序集安装到全局程序集缓存中
从“开始”菜单中,单击“运行”,键入 cmd,然后单击“确定”。 在命令提示符下,键入以下命令: gacutil –i <assemblyname>
注意 在该命令中,assembly name 是要安装到全局程序集缓存中的程序集名称。
下面的示例将具有文件名 Hello.dll 的程序集安装到全局程序集缓存中。
gacutil -i Hello.dll .NET Framework SDK 也提供了名为“程序集缓存查看器”(Shfusion.dll) 的 Windows 命令行解释器扩展,可以用来将程序集拖放进全局程序集缓存中。
|