小试ASP.NET 2.0的兼容性

ASP.NET 2.0来了! 在我们为ASP.NET 2.0的新特性感到激动的同时,我想很多ASP.NET开发人员非常关心这样一个问题:ASP.NET 2.0的兼容性怎么样?ASP.NET 1.1开发的程序能直接运行在ASP.NET 2.0上吗?

在SDK文档中,对于.NET Framework 2.0的兼容性有这样描述的:“The .NET Framework provides a high degree of support for backward compatibility. For example, most applications created using version 1.0 will run on version 1.1 and applications using version 1.1 will run on version 2.0.”。

看了这样的描述,我想:如果ASP.NET 1.1开发的程序真能直接运行在ASP.NET 2.0上,那就太棒了,但ASP.NET 2.0相对于1.1的变化这么大,做到这样的兼容难度很大,微软一向对向后兼容很重视,我们应该有所期望。如果兼容性不理想,从ASP.NET 1.1 迁移到ASP.NET 2.0会带来很大的成本与风险。自己开发的程序可以在ASP.NET 2.0上重新编译,可程序中所用的第三方组件呢?

那我们拿博客园的程序做个试验吧。对程序不作任何修改,直接在IIS管理器中将ASP.NET切换至2.0, 并将*.*的映射改为ASP.NET 2.0。

程序安装在本机的blog虚拟目录中,首先我访问地址:http://localhost/blog(由于建立了通配符映射,IIS不会把地址改为http://localhost/blog/default.aspx),   出现第一个错误:

There is no build provider registered for the extension '. You can register one in the <compilation><buildProviders> section in machine.config or web.config. Make sure is has a BuildProviderAppliesToAttribute attribute which includes the value 'Web' or 'All'. 

在ASP.NET 1.1中,这样访问是正常的,由于建立了通配符映射,请求由web.config中 <add verb="*" path="*" type="Dottext.Common.UrlManager.UrlReWriteHandlerFactory,Dottext.Common" />处理。而在ASP.NET 2.0 中,请求的资源需要有一个buildProvider来处理(在<buildProviders>中进行设置),而访问http://localhost/blog,并没有包含文件名,ASP.NET 2.0认为是一个扩展名为空的文件,找不到相应的buildProvider来处理(如果是aspx文件,默认的buildProvider是System.Web.Compilation.PageBuildProvider),所以会产生这样的错误。 我想应该可以通过在<buildProviders>中增加一个处理这类请求的buildProvider来解决这个问题,可是我在设置时遇到了一个问题:extension该如何设置?我尝试了以下几种设置都不行:

<add extension=".*" type="System.Web.Compilation.PageBuildProvider" />
<add extension="*" type="System.Web.Compilation.PageBuildProvider" />
<add extension="*.*" type="System.Web.Compilation.PageBuildProvider" />
<add extension="" type="System.Web.Compilation.PageBuildProvider" />(这个设置根本不允许)

不知是我没有找到设置的方法,还是extension本来就不支持通配符?如果是后者,这就是一个兼容性问题。但这种情况是比较特殊的,一般ASP.NET程序中不会遇到这样的情况。如果真的无法解决这个问题,那类似.Text这样使用通配符映射的方式将成为历史。如果谁知道解决方法,希望能得到您的指点。

时间: 2024-10-22 23:04:31

小试ASP.NET 2.0的兼容性的相关文章

使用Web标准生成ASP.NET 2.0 Web站点

asp.net|web|web标准|站点    简介 Web 标准使您能通过最少的工作,生成可被最广大受众访问的 Web 站点.Web 标准的承诺是:只需设计页面一次,即可让该页以完全相同的方式在任何现代的浏览器中显示和工作.例如,在按照标准生成以后,旨在在 Microsoft Internet Explorer 中以某种方式显示的页可在其他浏览器(如,Mozilla Firefox.Netscape Navigator.Opera.Camino 和 Safari)中以相同的方式显示,而无需完成

ASP.NET 2.0的新增服务、控件与功能

asp.net|控件 [导读]全文介绍了ASP.NET 2.0中新增的控件和功能,包括Master Pages,Data Source控件.Skin的支持.GridView和Details View的引入,在此基础上,ASP.NET 2.0的安全模型得到了极大的提高,包括登录控件.角色管理器.个性化等等方面的支持,在类库方面也增加了许多新特性,如全新的代码分隔模型.客户端回调等等,让读者对于ASP.NET的新特性有一个全面的了解. 在首次公诸于众以来的短短四年中,ASP.NET业已成为在Wind

ASP.NET 2.0“插件”说

asp.net ASP.NET 2.0"插件"说 在 ASP.NET 2.0的新特性中,最"耀眼"的也就是母版页.主题/皮肤.成员资格和角色管理.用户自定义属性以及 WebPart之页面个性化设置.除了前两项,其余都是建立在***Provider提供的服务之上. 这些Provider(类)在微软文档中一般是这样定义的:为...提供...服务,似乎与一般的控件类等一样,拿来用就是了.其实这些Provider(类)已经十分强烈地暗示微软.NET的一个发展方向,这个方向就

ASP.NET 2.0发送电子邮件全面剖析之二

asp.net 一.简介 在上篇中我们详细分析过,.NET框架2.0版本提供了一个新的命名空间(System.Net.Mail)和一些发送电子邮件的新类(注意:.NET框架1.x版本中提供的命名空间System.Web.Mail及相关的类仍然可以使用,以实现向后兼容性).而且,我们还详细分析过如何使用System.Net.Mail命名空间中的MailMessage和SmtpClient类来发送简单的普通文本格式的电子邮件消息. 本篇将讨论与电子邮件相关的更高级的选项.我们要分析如何发送HTML格

ASP.NET 2.0应用中定制安全凭证之理论篇

阅读提要 在缺省状况下,你只能使用Visual Studio 2005的一个本机实例来 管理与ASP.NET 2.0一同发行的SQL Server数据库中的安全凭证.本文将向你展 示怎样用一个Web服务来包装ASP.NET 2.0提供者并通过使用一个Windows表单应 用程序来管理凭证存储从而扩展这种管理能力. 如今,无论是互联网还是企业内部局域网程序一般都要求使用定制的方式来 存储和管理用户帐户和角色.为此,ASP.NET 2.0提供了一个现成的提供者模型 和一个SQL Sever数据库.不

Asp.net 1.0 升级至 ASP.NET 2.0十个问题总结

asp.net|问题     这几天升级了一下原来的1.1项目,发现了一些问题,总结一下放在这里,也提醒还没有来得及升级或准备升级的朋友,升级的过程中少走弯路,少浪费时间. 1.Global.asax文件的处理形式不一样 转化后将出现错误,在vs2003中Global.asax具有代码后置文件,2.0下, 将代码分离文件移到 App_Code 目录下,以便使其自动变为可通过应用程序中的任意 ASP.NET 页面访问."Code-behind"属性将从 ASAX 文件的指令中删除.vs2

ASP.NET 2.0不能识别eurl.axd的解决方法

在IIS6中同时启用了ASP.NET 2.0 和 ASP.NET 4.0 后,网站程序可能会出现如下错误:" System.Web.HttpException: Path '//eurl.axd/' was not found. " 错误发生的原因是当ASP.NET检测到Web站点配置为使用ASP.NET 4.0,本地ASP.NET 4.0 的组件会传递一个不能扩展的 URL到ASP.NET的管理程序作进一步处理.但是,如果一个低于ASP.NET 4.0 的网站配置为使用ASP.NET

ASP.NET 2.0实现依赖Oracle的缓存策略

asp.net|oracle|策略|缓存 ASP.NET 2.0中的缓存提供了对SQL依赖项的支持,也就是说当SQL SERVER数据库中的表或行中的数据被更改后,缓存中的页面就失效,否则,页面输出可一直保留在缓存当中.这确实为程序员提供了方便.但微软一向很小家子气,只为使用自家产品SQL SERVER的程序员提供了方便,那些用Oracle数据库的ASP.NET程序员怎么办呢? 其实不用着急,因为ASP.NET 2.0中的缓存还提供了对文件依赖项的支持,也就是缓存依赖于某个文件,该文件被修改后,

ASP.NET 2.0数据教程之三十二:数据控件的嵌套

返回"ASP.NET 2.0数据教程目录" 导言 除了静态HTML和数据绑定语法,template也可以包含Web控件和用 户控件.这些控件的属性可以通过声明语法,数据绑定语法或在服务器端通过事件 处理编程来设置. 通过将控件嵌入到template里,可以自定义界面,提升用 户体验.例如,在在GridView控件中使用TemplateField 里,我们学习了如何通过在 GridView的TemplateField里加一个Calendar控件来表示员工的雇佣日期.在给编 辑和新增界面增