劉慶生
【摘 要】ASP.NET SQL Server是微軟提供的重要軟件包,它能在中小型軟件系統(tǒng)中快速建立數(shù)據(jù)端。掌握其特點和配置方法是應(yīng)用的基礎(chǔ),合理地使用微軟提供的登錄控件能為開發(fā)人員降低成本。
【關(guān)鍵詞】ASP.NET配置;ASP.NET SQL Server;部署;登錄失敗
ASP.NET SQL Server是微軟Visual Studio 2005和2008體系中的重要軟件包,在這個軟件包中,微軟提供了一系列的“特色”服務(wù),如:成員資格、配置文件、角色管理、個性化設(shè)置等。當用戶打開VS2008的UI界面后,在左側(cè)工具箱“登錄”工具欄下會看到7個控件,它們都需要ASP.NET SQL Server的支持才能使用。如果我們能夠合理地使用微軟提供的登錄控件能為開發(fā)人員降低成本。其操作過程如下:
一、準備
Visual Studio 2008在安裝完成以后都會安裝SQL Server 2005部分組件,并創(chuàng)建SQL Server數(shù)據(jù)庫服務(wù)器。在“程序”-“Microsoft SQL Server 2005”-“配置工具”程序組中,一共有三個配置工具,其中“SQL Server配置管理器”用于調(diào)整數(shù)據(jù)庫服務(wù)器的啟動情況和支持的協(xié)議,可設(shè)置“SQL Server(SQLEXPRESS)”服務(wù)到自啟動狀態(tài)和“TCP/IP”協(xié)議為啟用狀態(tài)。最后在系統(tǒng)服務(wù)列表上檢查“SQL Server(SQLEXPRESS)”是否啟動,這是關(guān)鍵所在,如果沒啟動,后面應(yīng)用程序與數(shù)據(jù)庫相關(guān)的配置都無法進行。
在服務(wù)啟動以后,可以利用aspnet_reg-
sql.exe工具來創(chuàng)建SQL Server數(shù)據(jù)庫,通常用這個工具來自定義數(shù)據(jù)庫名。在連接服務(wù)器的時候,一定要指定關(guān)鍵字“SQLEXPRESS”,也就是在服務(wù)器名后面加上“/SQLEXPRESS”。部分截圖如下:
二、配置
在保證“SQL Server(SQLEXPRESS)”服務(wù)準備就緒以后,就可以開始配置數(shù)據(jù)庫具體內(nèi)容。點擊解決方案管理器下面最右邊的ASP.NET配置按鈕生成數(shù)據(jù)庫文件。具體過程:首先進入“ASP.NET網(wǎng)站管理工具”頁面,然后點擊“安全”鏈接,選擇身份驗證類型為:“通過Internet”,也就是Forms驗證方式。最后保存結(jié)果并關(guān)閉工具。在解決方案管理器的列表上點擊“App_Data”目錄,刷新文件夾就會看到這個目錄下生成了兩個新文件:數(shù)據(jù)庫主文件ASPNETDB.MDF和一個日志文件。系統(tǒng)會在數(shù)據(jù)庫文件中自動添加11個表、9個視圖、55個存儲過程。
直接雙擊數(shù)據(jù)庫文件就會打開“服務(wù)器資源管理器”界面,你就像看到一個精簡版的SQL Server 2005企業(yè)管理器,在這里可以完成數(shù)據(jù)庫的絕大部分操作。表、視圖、觸發(fā)器、存儲過程、函數(shù)等基本操作在這里一個都不少。可以這樣說,ASP.NET SQL Server是微軟精心為中小型企業(yè)用戶準備的隨身利器。
三、部署
在產(chǎn)品的部署階段,當數(shù)據(jù)庫文件隨同編譯好的文件復制到IIS服務(wù)器后,配置好虛擬目錄就完成了產(chǎn)品發(fā)布。當有用戶訪問數(shù)據(jù)庫的時候,系統(tǒng)會自動將ASPNETDB.MDF數(shù)據(jù)庫文件和日志文件附加到安裝有SQL Server 2005服務(wù)的服務(wù)器中。因為設(shè)計過程中用到了部分登錄控件,也有很多用戶自己設(shè)計的數(shù)據(jù)表讀寫模塊,一般都會碰到登錄失敗或數(shù)據(jù)表無法讀取的錯誤。下面是作者的經(jīng)歷和解決過程。
學生剛剛做完ASP.NET課程設(shè)計,我想把收集上來的作品在教學網(wǎng)站上做個展示??墒钱斘野烟摂M目錄建好預備預覽的時候碰到麻煩,用VS2008自帶的Login控件制作的登錄界面登錄,即使用戶名和密碼正確也無法登陸,總是提示:“您的登錄嘗試不成功。請重試。”。這些作品學生在調(diào)試的時候都沒問題的啊,為什么發(fā)布以后就出問題了呢?
開始在網(wǎng)上到處搜索解決問題的方法,CSDN有好多這方面的技術(shù)貼,就是不能解決問題,看來只能自己想辦法了。
首先,我檢查的是數(shù)據(jù)庫是否正確連接。在網(wǎng)站虛擬目錄的Asp.net配置的“常規(guī)”項中發(fā)現(xiàn)有2個數(shù)據(jù)庫連接字符串:LocalSqlServer和ConnectionString,一個是系統(tǒng)默認的本地SqlServer數(shù)據(jù)庫連接串,一個是手工建立的數(shù)據(jù)庫連接串。成員資格和角色使用的數(shù)據(jù)庫連接串是LocalSqlServer。把數(shù)據(jù)庫連接串換成ConnectionString后再測試竟然成功通過。
產(chǎn)生錯誤的罪魁禍首竟然是數(shù)據(jù)庫連接串。因為幾個“登錄”控件(含Login控件)的默認數(shù)據(jù)庫連接串是LocalSqlServer,當系統(tǒng)離開本地測試環(huán)境發(fā)布到IIS中,LocalSqlServer中標記的數(shù)據(jù)庫連接參數(shù)就會失效。只有在配置IIS的時候修改登陸控件的連接串才能解決問題。當然,也可以手工方式修改Web.config文件的對應(yīng)配置節(jié)。
下面是解決問題的過程截圖:
1.在IIS的虛擬目錄上點擊右鍵彈出配置界面,然后點擊有下角的“編輯配置”按鈕,進入修改Web.config內(nèi)容的程序。
2.檢查“常規(guī)”標簽下的2個數(shù)據(jù)庫連接,第一是默認數(shù)據(jù)庫連接串LocalSqlServer,
后面一個是手工建立的數(shù)據(jù)庫連接串Connec-
tionString。
3.切換到“身份驗證”標簽,然后分別依次點擊兩個“管理提供程序”按鈕,修改它們驗證的時候所使用的數(shù)據(jù)庫連接串。
4.進入“提供程序設(shè)置”界面。將右邊列表里的第一項ConnectionStringName的值全部修改成手工建立的連接串“Connec-
tionString”。分別如下圖所示:
到這里再測試就大功告成了。最后注意的兩點:(1)如果您有多個相同數(shù)據(jù)庫名(ASPNETDB.MDF)的程序發(fā)布在同一個網(wǎng)站,如:很多學生的作品要展示在同一網(wǎng)站,需要修改數(shù)據(jù)庫默認名稱。例如:把ASPNETDB.MDF改為ASPNETDB9.MDF(Log文件也要改)。因為在執(zhí)行程序的時候,系統(tǒng)會把您的數(shù)據(jù)庫文件自動附加到數(shù)據(jù)庫系統(tǒng)中,系統(tǒng)是絕對不允許有兩個名字相同的數(shù)據(jù)庫存在于同一個SqlServer中。(2)發(fā)布后的數(shù)據(jù)庫,必須要讓匿名用戶也能操作數(shù)據(jù)庫。所以請設(shè)置數(shù)據(jù)庫文件所在的目錄(App_Data)的目錄安全,讓Everyone組用戶能對這個目錄有讀寫的權(quán)限。
在部署產(chǎn)品的時候,如果默認的本地數(shù)據(jù)庫連接串在發(fā)布以后不能用,則可以在Web.config中另外建立一個指向同一個數(shù)據(jù)庫連接串。如果沒有建立自己的連接串,作品發(fā)布以后就無法使用登錄控件,這也許是很多人不喜歡微軟力推的“登錄與角色”控件而寧愿自己去編寫一套登錄驗證程序原因吧。其實,在深入了解ASP.NET SQL Server的特點以后,“微軟帝國”提供的這個軟件包還是很好用的,能花最小的代碼來達到相同的功能,何樂而不為呢。
參考文獻:
[1]王云鵬.C#新手開發(fā)實例演戰(zhàn)[M].中國鐵道出版社,2009.
[2]章立民.ASP.NET AJAX經(jīng)典范例168 VC#版[M].機械工業(yè)出版社,2007.
[3]Adam Calderon,Joel Rumerman.ASP.NET AJAX服務(wù)器控件高級編程[M].機械工業(yè)出版社,2009.