作者:童振華 (轉載請注時(shí)作者)
Webpart是asp.net 2.0中一項非常出色的功能,但是非常遺憾的是,默認是使用sql express 2005作為后臺數據庫。而且很多初學(xué)者在本機寫(xiě)完程序遷移到服務(wù)器上以后才如夢(mèng)初醒,原來(lái)還要后臺數據庫的,甚至WROX出的《Professional ASP.NET 2.0》在講webpart這節時(shí)都不曾提及后臺數據庫的事,真是讓人失望之極(起碼我沒(méi)看到)。而目前主流的網(wǎng)站都是用MS SQLServer 2000或是Access作為數據庫,如何才能把Webpart的數據庫從SQL Express 2005遷移到SQLServer 2000和Access呢?
遷移到SQLServer 2000
微軟提供了一個(gè)數據庫配置程序,可以方便的在SQLServer2000和SQLServer2005上進(jìn)行webpart的數據庫配置 。
1.首先運行SQLServer
2.然后運行C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe 會(huì )出現一個(gè)圖形化的操作界面,根據提示便可自動(dòng)生成一個(gè)名為aspnetdb的庫。
3.打開(kāi)vs.net 2005,新建一個(gè)網(wǎng)站,往頁(yè)面上拖一個(gè)webpartmanager,運行一下,出錯。因為你還沒(méi)有配web.config呀,而且vs.net2005與vs.net2003有所不同,默認是沒(méi)有web.config文件的,需要我們自己增加,(當然你也可以直接修改C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG下默認的web.config,但是我不推薦)。
4.在新加的web.config中把 <connectionStrings/>一行修改成如下
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Persist Security Info=True;User ID=sa;Password="
providerName="System.Data.SqlClient" />
</connectionStrings>
完成后的web.config為
<?xml version="1.0" encoding="utf-8"?>
<!--
注意: 除了手動(dòng)編輯此文件以外,您還可以使用
Web 管理工具來(lái)配置應用程序的設置??梢允褂?span lang="EN-US" twffan="done"> Visual Studio 中的
“網(wǎng)站”->“Asp.Net 配置”選項。
設置和注釋的完整列表在
machine.config.comments 中,該文件通常位于
\Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<!--
設置 compilation debug="true" 將調試符號插入
已編譯的頁(yè)面中。但由于這會(huì )
影響性能,因此只在開(kāi)發(fā)過(guò)程中將此值
設置為 true。
-->
<compilation debug="false" />
<!--
通過(guò) <authentication> 節可以配置 ASP.NET 使用的
安全身份驗證模式,
以標識傳入的用戶(hù)。
-->
<authentication mode="Windows" />
<!--
如果在執行請求的過(guò)程中出現未處理的錯誤,
則通過(guò) <customErrors> 節可以配置相應的處理步驟。具體說(shuō)來(lái),
開(kāi)發(fā)人員通過(guò)該節可以配置
要顯示的 html 錯誤頁(yè)
以代替錯誤堆棧跟蹤。
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
</system.web>
</configuration>
遷移到Access
將webpart的數據庫遷移到sqlserver是一件非常方便的事,但是對于很多小型網(wǎng)站來(lái)說(shuō),access才是最佳選擇。但是要將數據庫遷移到Access卻是一件非常的復雜的事情, 而且網(wǎng)上也沒(méi)有查到這方面現成的中文資料,之前在微軟英文asp.net新聞組發(fā)了個(gè)貼子也沒(méi)人回答,有些英文資料也是語(yǔ)焉不詳,不成系統。
下面我來(lái)說(shuō)一下詳細的過(guò)程。
首先你需要一個(gè)access的Provider以及相對應的數據庫。之前我曾經(jīng)從網(wǎng)上找了一個(gè)access的provider,并嘗試把SQLServer版的表導出成Access,結果發(fā)現這條路是行不通的,因為不匹配。
目前在英文google里能找到兩個(gè)access的Provide
一個(gè)是AccessPersonalizationProvider,下載地址是
http://www.kowitz.net/files/AccessPersonalizationProvider.zip
命名空間為MarkItUp.SingleUserBlog.Web.WebParts.AccessProviders 雖然在源代碼注釋里也寫(xiě)著(zhù)copyright是微軟的,但是下載時(shí)沒(méi)有對應的數據庫。
另外一個(gè)是微軟官方網(wǎng)站上的以前Beta1時(shí)出的 SampleAccessProviders,解壓后自帶一個(gè)access數據庫,而且還有web.config的樣例。下載地址是
http://msdn.microsoft.com/vstudio/eula.aspx?id=96713a8e-b8d4-4d6e-bb8f-027e6c8e15d8
我用的是后者。
下載后,名字是SampleAccessProviders.vsi,解壓縮后可以在C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Templates\ProjectTemplates\Visual Web Developer\Starter Kits\ASP.NET Access Providers 找到。
你可以用vs.net2005打開(kāi)Access.csproj編譯出dll,名字為SampleAccessProviders.dll,然后把ASPNetDB.mdb復制到App_Data目錄,然后在自己的網(wǎng)站中引用SampleAccessProviders.dll,并參考那個(gè)web.config修改自己的配置文件。
關(guān)于其他數據庫
由于SampleAccessProviders是開(kāi)放源代碼的,所以參照著(zhù)自己擴展Provider。目前網(wǎng)上可以找到XmlFilePersonalizationProvider。對于Oracle,mysql等數據庫可以自己寫(xiě)擴展Provider,但是目前我們已有了access這種數據庫獨立的方式,所以可以通過(guò)混用來(lái)實(shí)現更為方便。
后記:來(lái)到埃塞俄比亞當志愿者已有近兩個(gè)月了,工作一點(diǎn)挑戰也沒(méi)有,又打戰了,在這種網(wǎng)絡(luò )只有56K的鳥(niǎo)地方,真是一種痛苦。百無(wú)聊賴(lài)之際,想想以前在國內一直沒(méi)有時(shí)間空下來(lái)好好研究一下vs.net2005,(主要是更喜歡vs.net 2003的小巧),特寫(xiě)此文,結果寫(xiě)完了,一直上了不博客園,直到今天才打開(kāi),真是郁悶呀。
聯(lián)系客服