
2.7 ASP.NET AJAX应用程序的分发
分发ASP.NET AJAX的应用程序与分发ASP.NET 2.0的应用程序并无太大不同,首先是目标计算机必须安装好IIS及.NET Framework 2.0,另外还得特别小心ASP.NET AJAX的环境设置,当服务器端安装ASP.NET AJAX时,也就是说你已将下载的ASPAJAXExtSetup.msi拿到分发目的地计算机上运行并完成安装,那么所有的分发动作就跟分发ASP.NET 2.0程序没有两样,那如果目标计算机未安装ASP.NET AJAX而我们又没办法去安装,在虚拟主机的情况下又该怎么做呢?稍后我们会再提及这种环境下的分发方式,现在先谈谈第一种,也就是目标环境已经安装好ASP.NET AJAX的情况。
目标计算机已安装ASP.NET AJAX环境下的分发
在“ASP.NET Web Application”模式下,将编译后的目录下除.cs文件外复制到IIS的虚拟目录下即可完成分发。请记得该虚拟目录必须拥有脚本的运行权限,而且得点击创建应用程序按钮来启用ASP.NET,如图2-26所示。

图2-26
最终可用的ASP.NET虚拟目录应如图2-27所示。

图2-27
需特别注意ASP.NET标记的设定(如果有的话,某些计算机上可能无法看到此标记),要选成ASP.NET 2.0.50727,如图2-28所示。

图2-28
Web Site模式可以利用Visual Studio 2005提供的分发工具来进行分发,如图2-29所示。

图2-29
这个工具中有3 个选项可供选择,如图2-30 所示。当勾选第一个选项时,表示分发出来的文件会使用传统的“ASP.NET Web Application”模式编译,保留.aspx文件可供用户修改页面的布局,未勾选此选项时,即表示编译后将不保留.aspx文件的内容(此时.aspx文件仍然会存在,只是内容将只剩下一行),也就是用户不能通过修改.aspx来改变页面的布局。勾选第二个选项会使此工具为每一个.aspx产生一个.DLL文件,这种模式可以让日后更新某一网页时,只要更新对应的.aspx及.DLL文件即可。勾选第三个选项则会让此工具为编译出来的.DLL加上数字签名,让用户可以确认拿到的文件是由你所发出的。这三个选项是可以复合勾选的,举个例来说,当勾选第一、第二选项后,此工具将会为每一个.aspx产生一个.DLL,并且保留.aspx文件内容供用户改变页面布局,若只勾选第二个选项,那么产生出来的将是每一个.aspx有一个对应的.DLL,但.aspx的内容已经被删减成一行,不允许用户修改.aspx来改变页面布局。在分发时可选择分发的路径,图2-31 是勾选第一选项并将分发路径设为F:\Temp\MyWeb1 时,MyWeb1目录的文件内容。

图2-30

图2-31
接下来只要将此目录中的文件复制到目地IIS中的虚拟目录即可完成分发,此时的.aspx内容仍然保持原貌。若不勾选第一选项而进行分发,内容仍然不变,只是.aspx文件内容会如图2-32所示。

图2-32
如勾选第二选项,产生的文件便如图2-33所示。

图2-33
若IIS安装在本机上,分发工具也允许直接分发到IIS中,请点击分发工具输入分发目录区域右方的“...”按钮,如图2-34所示。

图2-34
若要分发的IIS之“Web Application”目录不存在,请点击右上角创建一个新的“Web Application”目录,并在选取该目录后点击开启即可,如图2-35所示。

图2-35
目标计算机未安装ASP.NET AJAX环境下的分发
在依照上面的方式将ASP.NET AJAX应用程序分发到一个未安装ASP.NET AJAX环境的计算机后,运行时会出现如图2-36所示的错误。

图2-36
这是因为ASP.NET AJAX应用程序会引用一个System.Web.Extensions.dll,而目的计算机上因为没安装ASP.NET AJAX环境而找不到该文件所引发的错误信息。解决办法很简单,将该文件一并分发出去即可,在Web Site模式下,你可以在“Solution Explorer”上右键单击选择“New Folder”,如图2-37所示。

图2-37
然后将该文件夹命名为“Bin”,如图2-38所示。

图2-38
接着在上面再右键单击,选择“Add Existing Item”,如图2-39所示。

图2-39
然后选取加入ASP.NET AJAX目录下的System.Web.Extensions.dll文件,如图2-40、图2-41所示。

图2-40

图2-41
完成后重新编译程序,并利用上述之分发工具来分发,此时产生的文件就会包含System.Web.Extensions.dll了,最后只要将产生出来的文件都复制到IIS之虚拟目录下即可完成分发。在“ASP.NET Web Application”的项目模式下就更简单了,只要点击“References”目录下的System.Web.Extensions.dll,并切换到属性页,修改其“Copy Local”属性为True,如图2-42、图2-43所示。

图2-42

图2-43
完成后重新编译,产生的文件就会包括System.Web.Extensions.dll了,最后只要复制除.cs外的文件到目地的IIS虚拟目录即可。