小试ASP.NET 2.0的兼容性
???? ASP.NET 2.0來了! 在我們?yōu)锳SP.NET 2.0的新特性感到激動的同時,我想很多ASP.NET開發(fā)人員非常關(guān)心這樣一個問題:ASP.NET 2.0的兼容性怎么樣?ASP.NET 1.1開發(fā)的程序能直接運(yùn)行在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開發(fā)的程序真能直接運(yùn)行在ASP.NET 2.0上,那就太棒了,但ASP.NET 2.0相對于1.1的變化這么大,做到這樣的兼容難度很大,微軟一向?qū)ο蚝蠹嫒莺苤匾?#xff0c;我們應(yīng)該有所期望。如果兼容性不理想,從ASP.NET 1.1 遷移到ASP.NET 2.0會帶來很大的成本與風(fēng)險。自己開發(fā)的程序可以在ASP.NET 2.0上重新編譯,可程序中所用的第三方組件呢?
???? 那我們拿博客園的程序做個試驗(yàn)吧。對程序不作任何修改,直接在IIS管理器中將ASP.NET切換至2.0, 并將*.*的映射改為ASP.NET 2.0。?
???? 程序安裝在本機(jī)的blog虛擬目錄中,首先我訪問地址:http://localhost/blog(由于建立了通配符映射,IIS不會把地址改為http://localhost/blog/default.aspx),???出現(xiàn)第一個錯誤:
?
????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>中進(jìn)行設(shè)置),而訪問http://localhost/blog,并沒有包含文件名,ASP.NET 2.0認(rèn)為是一個擴(kuò)展名為空的文件,找不到相應(yīng)的buildProvider來處理(如果是aspx文件,默認(rèn)的buildProvider是System.Web.Compilation.PageBuildProvider),所以會產(chǎn)生這樣的錯誤。?我想應(yīng)該可以通過在<buildProviders>中增加一個處理這類請求的buildProvider來解決這個問題,可是我在設(shè)置時遇到了一個問題:extension該如何設(shè)置?我嘗試了以下幾種設(shè)置都不行:
<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" />(這個設(shè)置根本不允許)
???? 不知是我沒有找到設(shè)置的方法,還是extension本來就不支持通配符?如果是后者,這就是一個兼容性問題。但這種情況是比較特殊的,一般ASP.NET程序中不會遇到這樣的情況。如果真的無法解決這個問題,那類似.Text這樣使用通配符映射的方式將成為歷史。如果誰知道解決方法,希望能得到您的指點(diǎn)。
???? 那我們用正常的地址方式訪問吧,輸入http://localhost/blog/default.aspx?,OK!首頁竟然顯示出來了!當(dāng)我正在贊嘆ASP.NET 2.0的兼容性時,突然彈出了“Visual Studio Just-In-Time Debugger”窗口,窗口的錯誤信息為:
“An unhandled exception("System.Data.SqlClient.SqlException") occurred in aspnet_wp.exe”。出現(xiàn)這樣的錯誤,真讓人失望。難道ADO.NET也不兼容? 這時,我多次刷新頁面進(jìn)行測試,竟然出現(xiàn)了“Server Application Unavailable”錯誤。寫到這,當(dāng)我準(zhǔn)備對ASP.NET 2.0的兼容性進(jìn)行批評時。我突然想到是不是連接字符串設(shè)置的問題,ASP.NET 2.0的兼容性不應(yīng)該這么差,我本來采用的是集成Windows驗(yàn)證(IntegratedSecurity=SSPI),?改成SQL Server驗(yàn)證試試。果然是Integrated Security=SSPI引起的,改過后,這兩個錯誤就不出現(xiàn)了。Integrated Security=SSPI為什么會引起這個問題?是不是兼容性引起的?是不是通過更改設(shè)置可以解決?目前還不知道,以后再仔細(xì)分析吧。雖然存在上面所說的問題,但我覺得這樣的兼容性還是可以接受的。
???? 繼續(xù)測試。網(wǎng)站首頁、Blog首頁可以訪問,進(jìn)入管理頁面試試,又來一個錯誤:
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相關(guān)的,明明web.config有這個設(shè)置,而且在ASP.NET 1.1中運(yùn)行正常,看來是ASP.NET 2.0帶來的問題。對于第三方控件的兼容問題,我們束手無策,只有兩個選擇:
1、等第三方控件升級后,再升級自己的程序;
2、放棄使用該控件。
???? 繼續(xù)往下測試,查看文章分類頁面,出現(xiàn)錯誤:
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,?如果文章中有不妥之處,歡迎指正。????
?????
總結(jié)
以上是生活随笔為你收集整理的小试ASP.NET 2.0的兼容性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小公司股东分红怎么分
- 下一篇: 好期贷借款额度从28000到0 具