• Ajax.net 配置(收藏)


    在ASP.NET 2.0中使用ASP.NET AJAX所提供的功能之前,需要对其进行必要的配置。ASP.NET AJAX的配置可分为两种情况:一种是从头开始,创建新的应用ASP.NET AJAX的应用程序;另一种是在现有的ASP.NET 2.0应用程序中使用ASP.NET AJAX进行扩展。对于前一种情况,我们可以使用ASP.NET AJAX安装中自带的Visual Studio项目模板,帮助我们自动配置好其所需要的相关设定;而对于后一种情况,则只能手动进行其配置。

    接下来将分别讨论这两种情况下ASP.NET AJAX的配置方法。

    2.4.1 在现有的ASP.NET程序上应用ASP.NET AJAX

    对于现有的基于ASP.NET 2.0的Web应用程序,我们需要手动配置ASP.NET AJAX的相关设定。

    注意,若你正打算从零开始学习ASP.NET AJAX,那么完全不必要纠缠于这节将要介绍的种种设定的细节中。你可以暂时跳过这节内容,从下一节“新建ASP.NET AJAX应用程序”开始阅读。

    1.添加必要程序集的引用

    首先在解决方案中添加启用ASP.NET AJAX所必需的Microsoft.Web.Extensions.dll和System.Web.Preview.dll两个程序集的引用,这两个程序集分别随ASP.NET AJAX的“核心”部分和“Futures”部分的安装部署到了本机。注意,若本机和远程服务器均安装了ASP.NET AJAX的核心部分,则System.Web.Extensions.dll程序集就已经添加至了各自的GAC中,在接下来的步骤中就不必再添加该程序集的引用。

    在Visual Studio中打开这个现有的ASP.NET 2.0的Web应用程序。若在Solution Explorer中没有\Bin文件夹,则首先在Web Site上单击右键,并在弹出的上下文菜单中选择Add ASP.NET Folder,然后在展开的菜单中选择Bin,即可添加Bin文件夹(见图2-7)。

    接着在刚刚添加的\Bin文件夹上再次单击右键,并在弹出菜单中选择Add Reference…。在弹出的对话框中切换至Browse选项卡,并导航到System.Web.Extensions. dll和Microsoft.Web.Preview.dll这两个程序集所在的位置(按照默认路径,这两个文件一般位于C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\ v.1.0.61025\和C:\Program Files\Microsoft ASP.NET\ ASP. NET 2.0 AJAX Futures January CTP\ v.1.0.61025中)。选择这两个文件,如图2-8所示。然后点击OK按钮以确认添加引用。

    更简单的方法是直接将Microsoft.Web.Extensions.dll和Microsoft.Web.Preview.dll拷贝到\Bin文件夹中,然后刷新Solution Explorer。如果一切正确的话,之后将会在Solution Explorer中看到添加好的这两个程序集,如图2-9所示。


     
     
    图2-8   在Bin文件夹内添加System.Web. Extensions.dll程序集的引用
     图2-9   添加了System.Web.Extensions.dll和Microsoft. Web.Preview.dll引用后的Solution Explorer
     

    2.配置Web.Config文件

    下面让我们打开并按照如下步骤编辑位于Web Site根目录下的Web.Config文件。

    Web.Config是一个XML文件,其中的根元素是<configuration>。在<configuration>根元素中添加一个<configSections>子元素,并在其中定义一些嵌套的<sectionGroup>:

    <configSections>

       <sectionGroup name="system.web.extensions"  type="System.Web.Configuration.SystemWebExtensionsSectionGroup,  System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35">

       <sectionGroup name="scripting"  type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">

       <sectionGroup name="webServices"  type="System.Web.Configuration.ScriptingWebServicesSectionGroup,  System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35">

             ...

             ...

           </sectionGroup>

         </sectionGroup>

       </sectionGroup>

    </configSections>

    然后在<configuration>根元素中定义<System.web.extensions>子元素,并在其中定义相应的与上面<sectionGroup>相呼应的层次结构,如下所示:

    <system.web.extensions>

       <scripting>

         <webServices>

           ...

           ...

         </webServices>

       </scripting>

    </system.web.extensions>

    若你希望ASP.NET AJAX应用程序在运行时能够对客户端脚本文件进行压缩或缓存,则应该在<sectionGroup name="scripting">中定义一个新的<section>:

    <section name="scriptResourceHandler"  type="System.Web.Configuration.ScriptingScriptResourceHandlerSection,  System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35" requirePermission="false"  allowDefinition="MachineToApplication"/>

    然后在<scripting>中添加这部分启用脚本资源压缩以及缓存的配置声明:

    <scriptResourceHandler enableCompression="true" enableCaching="true" />

    这段声明将在程序运行于Release模式时压缩客户端脚本库的大小。如果不是程序中有非常特殊的需要,我们绝对应该添加这个HTTP模块以提高网络传输速度。

    若ASP.NET AJAX应用程序中需要自定义的JSON转换方式,则应该在<sectionGroup name="webServices">的最内层中定义相应的<section>,例如:

    <section name="jsonSerialization"  type="System.Web.Configuration.ScriptingJsonSerializationSection,  System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35" requirePermission="false"  allowDefinition="Everywhere"/>

    并在<webServices>中添加自定义的转换器声明。例如,下列转换器即可将服务器端ADO.NET中的DataSet、DataTable以及DataRow自动转换为客户端的相应对象。当然,客户端的这三种对象也可以自动转换为服务器端的相应形式(关于这部分内容,将在第Ⅱ卷中详细介绍):

    <jsonSerialization maxJsonLength="500">

       <converters>

           <add name="DataSetConverter"  type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35"/>

           <add name="DataRowConverter"  type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

           <add name="DataTableConverter"  type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35"/>

       </converters>

    </jsonSerialization>

    若ASP.NET AJAX应用程序中需要在客户端访问ASP.NET所提供的用户身份认证服务,则应该在<sectionGroup name="webServices">中定义这样一个<section>:

    <section name="authenticationService"  type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false"  allowDefinition="MachineToApplication"/>

    并在<webServices>中添加这一段的定义,用来允许在客户端访问户身份认证服务(其中requireSSL属性可以根据需要设置):

    <authenticationService enabled="true" requireSSL ="true|false"/>

    若ASP.NET AJAX应用程序中需要在客户端访问ASP.NET所提供的用户个性化信息服务,则应该在<sectionGroup name="webServices">中定义这样一个<section>:

    <section name="profileService"  type="System.Web.Configuration.ScriptingProfileServiceSection,  System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35" requirePermission="false"  allowDefinition="MachineToApplication"/>

    并在<webServices>中添加这一段的定义,用来允许在客户端访问用户个性化信息服务。其中writeAccessProperties指定的用户个性化属性可以在客户端进行设定,read- AccessProperties指定的用户个性化属性可以在客户端进行访问:

    <profileService enabled="true"

             readAccessProperties=" propertyname1;propertyname2"

             writeAccessProperties=" propertyname1;propertyname2" />

    若想暴露出所有的用户个性化属性供客户端设定/读取,则可以在readAccess- Properties或WriteAccessProperties中使用通配符*,代码如下:

    <profileService enabled="true" readAccessProperties="*" WriteAccessProperties="*" />

    接下来在<configuration>根元素中的<system.web>节中注册ASP.NET AJAX服务器端控件的前缀:

    <pages>

       <controls>

         <add tagPrefix="asp" namespace="System.Web.UI"  assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35"/>

         <add tagPrefix="asp" namespace="Microsoft.Web.Preview.UI"  assembly="Microsoft.Web.Preview"/>

         <add tagPrefix="asp" namespace="Microsoft.Web.Preview.UI.Controls"  assembly="Microsoft.Web.Preview"/>

       </controls>

    </pages>

    接下来修改<compilation>节,允许调试和添加必要的用于调试的程序集:

    <compilation debug="true">

       <assemblies>

         <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35"/>

       </assemblies>

       <buildProviders>

         <add extension="*.asbx"  type="Microsoft.Web.Preview.Services.BridgeBuildProvider"/>

       </buildProviders>

    </compilation>

    注意,上面代码中同样包含了<buildProviders>以及其中*.asbx文件的声明。若你的应用程序不需要服务器端远程Web Service桥,那么没有必要添加<buildProviders>中的这部分内容。

    还是在<system.web>元素中,若你的ASP.NET AJAX应用程序中需要在客户端调用服务器端的Web Service,则需要对Web Service应用一些新的HTTP Handler,并为其生成必要的客户端JavaScript代理脚本。找到<system.web>元素中的<httpHandlers>子元素,移除现有的Web Service文件(.asmx)的Handler,然后添加ASP.NET AJAX引入的新的Handler(*.asbx一项同样可以根据需要有选择地添加):

    <httpHandlers>

       <remove verb="*" path="*.asmx"/>

       <add verb="*" path="*.asmx" validate="false"  type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions,  Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

       <add verb="*" path="*_AppService.axd" validate="false"  type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

       <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"  validate="false"/>

       <add verb="GET,HEAD,POST" path="*.asbx"  type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"  validate="false"/>

    </httpHandlers>

    仍然是在<system.web>元素中添加如下的HTTP模块声明:

    <httpModules>

       <add name="ScriptModule" type="System.Web.Handlers.ScriptModule,  System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35"/>

    </httpModules>

    最后,在<configuration>节中添加<system.webServer>小节,为Web服务器进行相应的配置(这些配置是可选的,将只应用于IIS7中):

    <system.webServer>

       <validation validateIntegratedModeConfiguration="false"/>

       <modules>

         <add name="ScriptModule" preCondition="integratedMode"  type="System.Web.Handlers.ScriptModule, System.Web.Extensions,  Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

       </modules>

       <handlers>

         <remove name="WebServiceHandlerFactory-Integrated"/>

         <add name="ScriptHandlerFactory" verb="*" path="*.asmx"  preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory,  System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35"/>

         <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd"  preCondition="integratedMode" type="System.Web.Script.Services.  ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0,  Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

         <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD"  path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler,  System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35"/>

         <add name="ASBXHandler" verb="GET,HEAD,POST" path="*.asbx"  preCondition="integratedMode" type="System.Web.Script.Services.  ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0,  Culture=neutral,PublicKeyToken=31bf3856ad364e35"/>

       </handlers>

    </system.webServer>

    通过上述设置过程,我们就完成了为现有的ASP.NET 2.0应用程序应用ASP.NET AJAX所需要的所有配置步骤。

    可以看到ASP.NET AJAX的配置并不是那么容易,但新建的ASP.NET AJAX Web站点中的Web.config文件即包含了默认的ASP.NET AJAX配置。我们完全可以基于这个文件并按照上面的介绍,根据需要对其进行修改或补充。限于篇幅,这里就不再列出完整的代码。

    2.4.2 新建ASP.NET AJAX应用程序

    2.3节中安装的ASP.NET 2.0 AJAX Extensions核心部分以及Futures部分均会在Visual Studio中添加相应的Web站点模板,这样新建ASP.NET AJAX应用程序就变得非常简单了。首先,在Visual Studio的菜单中选择File | New | Web Site…,将看到如图2-10所示的New Web Site对话框。



    图2-10   在Visual Studio中创建新的ASP.NET AJAX Web站点

    其中ASP.NET AJAX-Enabled Web Site是ASP.NET 2.0 AJAX Extensions“核心”部分所添加的站点模板,ASP.NET AJAX CTP-Enabled Web Site则是“Futures”部分的站点模板。后者包含了前者的所有内容与功能,所以这里我们选择后者作为新建Web站点的模板。指定网站路径以及服务器端程序语言后点击OK按钮,Visual Studio将自动依照安装的模板创建出一个新的ASP.NET AJAX Web Site。创建之后,该ASP.NET AJAX Web Site在Solution Explorer中的组织结构将如图2-11所示。



    图2-11   新建的ASP.NET AJAX Web Site的组织结构

    从图2-11中可以看到,该Web Site的Bin目录下已经添加了对Microsoft.Web.Preview.dll(即“Futures”程序集)的引用,而核心部分的System.Web.Extensions.dll程序集在ASP.NET 2.0 AJAX Extensions安装的过程中已经添加到了GAC中,故无需再手工添加其引用。随模板自动生成的Default.aspx文件中也包含了一些ASP.NET AJAX必需的标记,例如ScriptManager的定义等。Web.config文件中同样自带了一般ASP.NET AJAX应用程序所需要的配置。当然,有时候你仍需要打开该文件并对其内容进行手动修改。

    2.4.3 将“Futures”部分中的服务器端控件添加到Visual Studio的Toolbox中

    Visual Studio的Toolbox上列出了常用的控件,作为开发者,只需要将上面的某个控件拖到页面设计器中,Visual Studio即可自动生成必要的声明以及初始化代码。Toolbox中的控件是分组归类的,在图2-12中,我们可以看到默认的分类包括Standard、Data、Validation等。Toolbox支持我们自定义其中放置的控件;在ASP.NET 2.0 AJAX Extensions核心部分的安装过程中,已经添加了一个新的名为AJAX Extensions的控件组,并将核心部分的几个服务器端控件添加于其中。



    图2-12   Toolbox中的AJAX Extensions的控件组

    为了便于今后使用,我们可以将ASP.NET 2.0 AJAX Extensions的“Futures”部分中提供的服务器端控件也添加到其中。展开AJAX Extensions控件组并在其中单击右键,并选择Choose Items…,如图2-13所示。



    图2-13   在AJAX Extensions控件组中添加控件

    在弹出的对话框中点击Browse…,导航至Microsoft.Web.Preview.dll所在的文件夹并选中该程序集。这样,该对话框的可选控件列表中将添加并选中Microsoft.Web.Preview.dll程序集中包含的所有控件。点击Assembly Name标题栏,按照程序集名称排序之后,该对话框将如图2-14所示。



    图2-14   选择Microsoft.Web.Preview.dll程序集中包含的Futures控件

    点击OK进行确认,这样“Futures”部分中的服务器端控件就添加到Toolbox中的AJAX Extensions控件组中,如图2-15所示。



    图2-15   添加了Futures控件的AJAX Extensions控件组

    从图2-15中可以看到ASP.NET AJAX提供的所有服务器端控件,在接下来的4章中,将详细介绍这些控件的使用方法以及它们的应用范围。



    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhaojp0411/archive/2009/05/25/4213784.aspx
  • 相关阅读:
    BZOJ1443 [JSOI2009]游戏Game
    BZOJ4950 [Wf2017]Mission Improbable
    假期编程
    假期编程
    假期编程
    假期编程
    假期编程练习-求和
    假期编程练习——一个数的n次幂取余
    假期编程练习———十进制转二进制
    小球抛物线运动
  • 原文地址:https://www.cnblogs.com/wanglinglong/p/1624792.html
Copyright © 2020-2023  润新知