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这样使用通配符映射的方式将成为历史。如果谁知道解决方法,希望能得到您的指点。
     那我们用正常的地址方式访问吧,输入http://localhost/blog/default.aspx ,OK!首页竟然显示出来了!当我正在赞叹ASP.NET 2.0的兼容性时,突然弹出了“Visual Studio Just-In-Time Debugger”窗口,窗口的错误信息为:
“An unhandled exception("System.Data.SqlClient.SqlException") occurred in aspnet_wp.exe”。出现这样的错误,真让人失望。难道ADO.NET也不兼容? 这时,我多次刷新页面进行测试,竟然出现了“Server Application Unavailable”错误。写到这,当我准备对ASP.NET 2.0的兼容性进行批评时。我突然想到是不是连接字符串设置的问题,ASP.NET 2.0的兼容性不应该这么差,我本来采用的是集成Windows验证(IntegratedSecurity=SSPI), 改成SQL Server验证试试。果然是Integrated Security=SSPI引起的,改过后,这两个错误就不出现了。Integrated Security=SSPI为什么会引起这个问题?是不是兼容性引起的?是不是通过更改设置可以解决?目前还不知道,以后再仔细分析吧。虽然存在上面所说的问题,但我觉得这样的兼容性还是可以接受的。
     继续测试。网站首页、Blog首页可以访问,进入管理页面试试,又来一个错误:

The WebResource.axd handler must be registered in the configuration to process this request.
<!-- Web.Config Configuration File -->
<configuration>
   <system.web>
       <httpHandlers>
           <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" />
       </httpHandlers>
   </system.web>
</configuration> 
  
一看就知道,这是与FreeTextBox相关的,明明web.config有这个设置,而且在ASP.NET 1.1中运行正常,看来是ASP.NET 2.0带来的问题。对于第三方控件的兼容问题,我们束手无策,只有两个选择:
1、等第三方控件升级后,再升级自己的程序;
2、放弃使用该控件。

继续往下测试,查看文章分类页面,出现错误:
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: Ambiguous match found.
Source Error:
Line 1:  <%@ Control Language="c#" Inherits="Dottext.Web.UI.Controls.EntryList" %>
Line 2:  <%@ Import Namespace = "Dottext.Framework" %>
Line 3:  <h2><asp:Literal ID = "EntryCollectionTitle" Runat = "server" /></h2>

对这样的错误我目前是束手无策,以后再分析。
今天就测试到这吧!

由于刚刚接触ASP.NET 2.0, 如果文章中有不妥之处,欢迎指正。

小试ASP.NET 2.0的兼容性相关推荐

  1. ASP.NET 4.0: 请求验证模式变化导致ValidateRequest=false失效

    ASP.NET请求验证功能可以给我提供应用程序的安全保证,避免站点受到XSS的攻击.但是在一些情况下,我们需要禁用这个功能,比如我们需要使用HtmlEditor来让用户输入一些HTML文本,这时候AS ...

  2. ASP.NET 2.0 中的新增服务、控件与功能概述(四)

    原文出自http://blog.sina.com.cn/s/blog_48b6cd65010004fc.html 个性化 另一个新增的服务是个性化,它提供了一种现成的解决方案,用于解决存储站点用户的个 ...

  3. [转载] 使用 Web 标准生成 ASP.NET 2.0 Web 站点

    参考链接: 使用super访问Java祖父母的成员 Stephen WaltherSuperExpert.com 适用于: Microsoft ASP.NET 2.0 (Beta 2) Microso ...

  4. 通过 ASP.NET 2.0 的数据增强功能来提高负载和减少代码 --作者:Dino Esposito

    [导读]在ASP.NET 2.0中引入了数据源组件,相对于1.x版本,在开发效率和运行效率上都得到了极大的提升,而本文将详细介绍新的数据控件,包括编程接口.用法和实现. 绝大多数Web应用程序都会使用 ...

  5. [导入]Learning.ASP.NET 2.0.with.AJAX.pdf(14.14 MB)

    ASP.NET 2.0的AJAX无疑是最快,最有效,最可靠和最佳的方式支持创建交互式Web应用程序上市.结合开发工具,可以从Microsoft ,免费和商业,这是 难以置信轻松地创建网站,看看伟大的表 ...

  6. ASP.NET 2.0 绑定高级技巧

    1.简单数据绑定定 <!--ASP.NET 1.x data binding expression --> <%# DataBinder.Eval(Container.DataIte ...

  7. ASP.Net 2.0 发送邮件的代码

    这两天因为要做一个可以收集用户提交信息,然后发送邮件到指定邮箱的网页.在 asp.net 2.0 里面发送邮件可以使用 System.Net.Mail 下面的类.http://www.systemne ...

  8. 在ASP.NET 2.0中使用样式、主题和皮肤

    ASP.NET 2.0的主题和皮肤特性使你能够把样式和布局信息存放到一组独立的文件中,总称为主题(Theme).接下来我们可以把这个主题应用到任何站点,用于改变该站点内的页面和控件的外观和感觉.通过改 ...

  9. asp.net 2.0中设定默认焦点按钮

    在asp.net 1.1中,当要在page_load页面中,设置某个控件为默认的焦点按钮(也就是默认焦点是在这个控件上的),可能要用到javascript的代码,而在ASP.NET 2.0中,不用这些 ...

最新文章

  1. Udacity机器人软件工程师课程笔记(九)-ROS-Catkin包、工作空间和目录结构
  2. 微软、商汤等专家纵论AI未来:三年内主要趋势及挑战是什么?
  3. 700 页的机器学习笔记火了!完整版开放下载
  4. 帝国cms底部代码哪里改?要修改版权和统计代码
  5. USACO 1.0_Friday the Thirteenth
  6. rs485调试软件_5种RS485切换方向的方法及优劣势分析
  7. win10子系统linux编译ffmpeg
  8. 前端学习(1086):构造函数 原型 实例的关系
  9. AngularJs ngIf、ngSwitch、ngHide/ngShow
  10. gridview合并单元格
  11. 代码补全_补全股票代码位数的一百种姿势
  12. vue学习笔记(五)— 组件通信
  13. tomcat日志详解
  14. 单片机课设中期报告_本科论文中期报告
  15. MT【217】韦达定理应用
  16. python数据分析电影论文_以腾讯5000部电影为例,告诉你Python数据分析该怎么做...
  17. 各种有用的东西、黑科技、技巧
  18. 逆序数(inverse number)
  19. 新辰:十种外链终极方法 让SEOer外链之路不再孤独!
  20. 哗啦啦系统后台新增店铺

热门文章

  1. 领航商务之选——金立M5 plus体验札记
  2. Apache访问日志切割
  3. OCCI读写Oracle Spatial的SDO_Geometry
  4. jQuery 第二章
  5. Python 获取项目根路径
  6. 【学无止境】ajax长循环,反向ajax初体会,不用ws实现即时聊天
  7. 浏览器输入 URL 之后的链路
  8. 03013_JDBC工具类
  9. 刷题总结——拆网线(noip模拟 贪心)
  10. [转] hibernate Mysql 自增长 注解配置,表无关联的注解方式关联查询