这篇文章的重点在于如何一步一步的教你如何把一个整合了 Microsoft ASP.net ajax 的程序迁移到Microsoft Asp.net ajax rc上。这篇文章只是个快速参考,详细的内容请阅读白皮书,Changes between the ASP.NET AJAX (“Atlas”) CTP and the RC and RTM Releases.
迁移一个现有的程序需要下面3步:
1.安装新的发行版本。
2.编辑程序配置文件(web.config)。
3.升级web服务。
所有这些步骤将在下面详细解释。
1. 安装新的ASP.NET AJAX 发行版本
从ajax.asp.net下载最新的asp.net ajax发行版本,然后依照下面的步骤来做:
- 利用控制面板里面的添加删除程序删除asp.net ajax beta2
- 安装Microsoft ASP.NET 2.0 AJAX Extension 1.0 RC.
- 决定Microsoft ASP.NET 2.0 AJAX Futures December CTP中那些选项你需要安装。如果你使用了AutoCompleteExtender控件或者其他不再Core包中的“Atlas” CTP的项,那么你就要安装了。详细的需求列表看Feature Matrix。
- 如果你使用了CTP的项,安装CTP的发行版本并且用下面目录的文件替换Bin目录下的Microsoft.web.preview.dll assembly:
%ProgramFiles%\Microsoft ASP.NET\ASP.NET 2.0 AJAX Futures December CTP\v1.0.61025
- 如果你使用了“Atlas”控件工具集,请安装新的Asp.net ajax 工具集。关于她的更改请参考在线文档Control Toolkit Web site。
- 如果合适,最好复制新的AJAX Futures December CTP 和 ASP.NET AJAX Control Toolkit assemblies 到程序的Bin目录.
2. 更新配置文件
核心的Asp.net ajax assembly从Microsoft.web.extensions.dll转变到System.web.extensions.dll。另外,他们的命名空间也从Microsoft.Web.*变成了System.Web.*。
要在现有项目中使用最新的Asp.net ajax,你必须更新你程序文件夹下面的Web.config文件。我们强烈建议你复制一下目录中我们提供给你的web.config模版,然后根据自己的情况更新web.config中的设置:
%ProgramFiles%\Microsoft ASP.NET\ASP.NET 2.0
如果你想手动的编写你的web.config文件,请参考本文的Appendix。
3. 更新你的web服务
核心的Asp.net ajax assembly从Microsoft.web.extensions.dll转变到System.web.extensions.dll。因此,你必须改变你所有web服务的ScriptService属性指向新的namespace. 下面的例子(使用C#)展示了CTP版本和RC版本的web服务的ScriptService属性。
CTP
[Microsoft.Web.Script.Services.ScriptService]
public class UIService : System.Web.Services.WebService {
// Web service implementation goes here.
}
ASP.NET AJAX v1.0
[System.Web.Script.Services.ScriptService]
public class UIService : System.Web.Services.WebService {
// Web service implementation goes here.
}
Appendix – 手动更改配置文件
这节主要描述了如何手动配置你的程序配置文件(web.config)以让他可以在asp.net ajax rc版本中工作。
<configuration>
<configSections>
- 使用下面路径中文件的相应内容替换下面的内容:
%ProgramFiles%\Microsoft ASP.NET\ASP.NET 2.0
<system.web>
<compilation>
<assemblies>
- 更新现有的entry到新的assembly name:
<add assembly="System.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<system.web>
<pages>
<controls>
- 去除下面的entry:
<add namespace="Microsoft.Web.UI.Controls"
assembly="Microsoft.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"
tagPrefix="asp" />
- 更新现有的entry指向新的assembly name和namespace:
<add namespace="System.Web.UI"
assembly="System.Web.Extensions,
Version=1.0.61025.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35"
tagPrefix="asp" />
如果你使用的ASP.NET Futures release, 确保有一下两行:
<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"/>
<system.web>
<pages>
<tagMapping>
- Update the existing entries to reflect the new assembly name and namespace:
<add tagType="System.Web.UI.WebControls.CompareValidator"
mappedTagType="System.Web.UI.Compatibility.CompareValidator,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add tagType="System.Web.UI.WebControls.CustomValidator"
mappedTagType="System.Web.UI.Compatibility.CustomValidator,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add tagType="System.Web.UI.WebControls.RangeValidator"
mappedTagType="System.Web.UI.Compatibility.RangeValidator,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add tagType="System.Web.UI.WebControls.RegularExpressionValidator"
mappedTagType="System.Web.UI.Compatibility.RegularExpressionValidator,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add tagType="System.Web.UI.WebControls.RequiredFieldValidator"
mappedTagType="System.Web.UI.Compatibility.RequiredFieldValidator,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add tagType="System.Web.UI.WebControls.ValidationSummary"
mappedTagType="System.Web.UI.Compatibility.ValidationSummary,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<configuration>
<System.web>
<httpHandlers>
- 更新现有的entry指向新的assembly name and namespace:
<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="GET,HEAD" path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler,
System.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"
validate="false"/>
<configuration>
<System.web>
<httpModules>
- 更新现有的entry指向新的assembly name and namespace:
<add name="ScriptModule"
type="System.Web.Handlers.ScriptModule,
System.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<configuration>
<System.webserver>
<httpModules>
- 更新现有的entry指向新的assembly name and namespace:
<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-ISAPI-2.0"/>
<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="ScriptResource" verb="GET" path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler,
System.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>