如何:在 Visual Studio 2008 中处理 ASP.NET AJAX 1.0 Web 项目

更新:2007 年 11 月

利用 Visual Studio 2008 中的多目标支持,可以在新的和现有的网站和 Web 应用程序项目中使用 ASP.NET AJAX 1.0。您可以直接运行现有的网站,而无需将它们升级到 ASP.NET 和 .NET Framework 的最新版本。同时,还可以在 Visual Studio 2008 中开发和维护 ASP.NET AJAX 1.0 网站并获得 Visual Studio 2008 的新增功能(例如 JScript IntelliSense)所带来的好处。

如果无法使用最新的运行库运行网站,则使用 ASP.NET 和 .NET Framework 的早期版本运行网站有时也十分有用。下面是这种情况的几个示例:

  • 承载网站的宿主网站尚未升级到运行库的最新版本。

  • 网站所依赖的控件或组件与当前运行库不兼容。

在 Visual Studio 2008 中创建新的 AJAX 1.0 网站

下面的过程演示如何使用 Visual Studio 2008 创建新的 ASP.NET AJAX 1.0 网站或 Web 应用程序项目。在完整版的 Visual Studio 2008 和 Visual Web Developer 速成版之间,此过程略有不同。

创建新的 AJAX 1.0 网站

  1. 下载和安装 ASP.NET AJAX 1.0。可以从 ASP.NET AJAX 网站下载安装程序。

  2. 若要创建新的网站,请执行下列操作:

    1. 在**“文件”菜单中单击“新建网站”**。

    2. 在**“新建网站”对话框的“Visual Studio 已安装的模板”下,选择“ASP.NET 网站”**。

  3. 若要创建新的 Web 应用程序项目,请执行下列操作:

    1. 在**“文件”菜单中,单击“新建项目”**。

    2. 在**“新建项目”对话框的“Visual Studio 已安装的模板”下,选择“ASP.NET Web 应用程序”**。

  4. 如果使用的是 Visual Studio 2008(而非 Visual Web Developer 速成版)的完整版本,请在“目标 Framework”列表(位于右上角)中,选择**“.NET Framework 2.0”**。

  5. 单击**“确定”**。

    随即将创建新的网站或项目。

  6. 如果使用的是 Visual Web Developer 速成版,请执行下列操作,以将目标 Framework 更改为 2.0:

    1. 在**“解决方案资源管理器”中,右击网站的名称,然后单击“属性页”**。

    2. 在左侧的列表中,单击**“生成”**。

    3. 在**“目标 Framework”列表中,选择“.NET Framework 2.0”**。

  7. 在网站文件夹的根目录中,创建一个 ASP.NET AJAX 1.0 Web.config 文件。

    有关 ASP.NET AJAX 1.0 Web.config 文件内容的清单,请参见本主题后面的 ASP.NET AJAX 1.0 Web.config 文件内容。

在 Visual Studio 2008 中打开现有的 ASP.NET AJAX 1.0 网站

您可以在 Visual Studio 2008 中直接处理现有的网站或 Web 应用程序,而无需升级至运行库的最新版本。

打开现有的 AJAX 1.0 网站或 Web 应用程序项目

  1. 为该网站或 Web 应用程序项目创建一个备份副本。

    如果在无意中升级了网站或项目,则升级操作将影响网站的文件,且无法撤消。

  2. 在 Visual Studio 2008 中打开网站或 Web 应用程序项目。

  3. 当 Visual Studio 2008 提示是否要升级项目时,请单击**“否”**。

    项目的目标依然是 .NET Framework 2.0。

更新 ASP.NET AJAX 控件工具包程序集

如果应用程序包含 ASP.NET AJAX 控件工具包中的控件或扩展程序,则必须升级至新版本的控件工具包,才能使用 Visual Studio 2008 运行该应用程序。您可以从 Codeplex Web site(Codeplex 网站)下载 ASP.NET AJAX 1.0 控件工具包的最新版本。请确保获取该库的 1.0 版(原始版本)。

Bb907639.alert_caution(zh-cn,VS.90).gif重要说明:

该控件工具包是一个由社区支持的库,Microsoft 并不对它提供支持。

安装该控件工具包后,即可向**“工具箱”**中添加控件工具包控件。

向工具箱中添加 ASP.NET AJAX 控件工具包控件

  1. 在 ASP.NET AJAX 1.0 网站或项目中,打开一个 ASP.NET 网页(Web 窗体)。

  2. 右击**“工具箱”,然后单击“添加选项卡”**。

  3. 为新选项卡提供一个名称,例如“ASP.NET AJAX Toolkit 1.0”。

  4. 右击新选项卡,然后单击**“选择项…”**。

    Bb907639.alert_note(zh-cn,VS.90).gif说明:

    首次打开此对话框时,可能会出现延迟。

  5. 在**“选择工具箱项”对话框中,单击“浏览…”**。

  6. 浏览至 AJAX 控件工具包程序集所在的文件夹,选择“AjaxControlToolkit.dll”,然后单击**“打开”**。

    随即将在**“选择工具箱项”**对话框内选中该控件工具包中的所有控件。

  7. 单击**“确定”**

    这些控件将添加到**“工具箱”**中。

现在便可以在 Visual Studio 2008 中处理 AJAX 1.0 Web 应用程序了。应用程序将使用 .NET Framework 2.0 生成并运行。

当下次在 Visual Studio 中打开网站时,将不会再显示升级提示。但是,您可以随时将 .NET Framework 的目标版本更改为 .NET Framework 3.5 版。有关更多信息,请参见如何:将 ASP.NET AJAX 1.0 Web 项目升级至 .NET Framework 3.5

在 AJAX 1.0 应用程序中使用 Visual Studio 2008 功能

您可以使用 Visual Studio 2008 中的新增功能开发 AJAX 1.0 应用程序,但下列情况例外:

  • **“添加新项”对话框中没有“AJAX Web 窗体”“AJAX 母版页”等 AJAX 项模板。若要创建带 AJAX 支持的 ASP.NET 网页或母版页,请先向网站中添加一个普通页,然后从“工具箱”**中向该页添加一个 ScriptManager 控件。

  • JScript IntelliSense 在使用 ASP.NET 配置文件服务时不可用。

  • AJAX 1.0 控件工具包或其他 ASP.NET AJAX 1.0 第三方控件库中的扩展程序控件不支持 Visual Studio 2008 扩展程序的设计时增强功能。例如,它们不支持**“设计”视图中的“选择扩展程序…”**智能标记命令。

ASP.NET AJAX 1.0 Web.config 文件内容

若要创建 ASP.NET AJAX 1.0 配置文件,请先创建一个名为 Web.config 的文件,然后在其中粘贴下面的 XML:

<?xml version="1.0"?>
<configuration>
  <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">
        <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
          <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
          <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
          <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
        </sectionGroup>
      </sectionGroup>
    </sectionGroup>
  </configSections>
  <system.web>
    <pages>
      <controls>
        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      </controls>
    </pages>
    <compilation debug="true">
      <assemblies>
        <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      </assemblies>
    </compilation>
    <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"/>
    </httpHandlers>
    <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </httpModules>
  </system.web>
  <system.web.extensions>
    <scripting>
      <webServices>
        <!-- Uncomment this line to customize maxJsonLength and add a custom converter -->
        <!--
          <jsonSerialization maxJsonLength="500">
            <converters>
              <add name="ConvertMe" type="Acme.SubAcme.ConvertMeTypeConverter"/>
            </converters>
          </jsonSerialization>
        -->
        <!-- Uncomment this line to enable the authentication service. Include requireSSL="true" if appropriate. -->
        <!--
          <authenticationService enabled="true" requireSSL = "true|false"/>
        -->
        <!-- Uncomment these lines to enable the profile service. To allow profile properties to be retrieved
             and modified in ASP.NET AJAX applications, you need to add each property name to the readAccessProperties and
             writeAccessProperties attributes. -->
        <!--
          <profileService enabled="true"
            readAccessProperties="propertyname1,propertyname2"
            writeAccessProperties="propertyname1,propertyname2" />
        -->
      </webServices>
      <!--
        <scriptResourceHandler enableCompression="true" enableCaching="true" />
      -->
    </scripting>
  </system.web.extensions>
  <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"/>
    </handlers>
  </system.webServer>
</configuration>

请参见

概念

面向网站的 .NET Framework

迁移和转换 ASP.NET 网站

概述:将 Visual Studio 网站和项目转换至 Visual Studio 2008