在APACHE上運(yùn)行ASP.NET經(jīng)驗(yàn)總結(jié)
APACHE上運(yùn)行ASP.NET要點(diǎn)一、為什么不用IIS
用asp.net開發(fā)網(wǎng)頁,服務(wù)器選擇IIS是絕對最佳的網(wǎng)頁部署方案,我說此話似乎是廢話,因?yàn)樗鼈兌际俏④涀约耶a(chǎn)品,結(jié)合當(dāng)然會更好些。但是我遇到一種情況,讓我考慮非IIS的asp.net部署方案。
我用的操作系統(tǒng)是WINXP系統(tǒng),而且是Ghost XP版的,一裝好系統(tǒng)默認(rèn)是沒有安裝IIS的,要下載單獨(dú)的IIS安裝包或用原始系統(tǒng)盤在控制面板中添加這個IIS組件。在這樣不專業(yè)的環(huán)境下搭建的IIS問題很多(比如系統(tǒng)更新某些補(bǔ)丁可以導(dǎo)致IIS不可用),有時候IIS出現(xiàn)問題后,即使重裝IIS也是不管用的,此時唯有重裝系統(tǒng),所以特別煩,特別是自己系統(tǒng)用了一段時間后,安裝了較多軟件,自己真的不想隨便重裝系統(tǒng)。所以此時我想到了IIS之外的asp.net服務(wù)器搭建選擇。
APACHE上運(yùn)行ASP.NET要點(diǎn)二、所需文件
1、PHPnow。(包含PHP、Apache,MySQL,其實(shí)只要Apache就行了,……)
2、Microsoft .NET Framework。
3、Apache的asp.net模塊。
APACHE上運(yùn)行ASP.NET要點(diǎn)三、配置過程
1、安裝Microsoft .NET Framework。一路Next下去就完成安裝。
2、安裝Apache服務(wù)器。解壓PHPnow安裝包后運(yùn)行Setup.cmd安裝就行了(具體安裝方法可以參考我另外一篇教程《用Zend Studio+PHPnow+Zend Debugger搭建PHP服務(wù)器調(diào)試環(huán)境》),因?yàn)槲掖蛩氵€會使用PHP網(wǎng)頁,所以用了PHPnow集成安裝包,而不是單獨(dú)安裝Apache。
3、安裝Apache的asp.net模塊。安裝下載回來的安裝文件,安裝程序會初始化,并自動去找到Apache安裝目錄,如果發(fā)現(xiàn)找錯了,自己可以手動調(diào)整。(注意:mod_aspdotnet版本要與自己安裝的Apache版本對應(yīng)上)。最后配置一下Apache-20/conf/httpd.conf文件,用記事本打開這個文件,在文件末尾追加以下配置節(jié)點(diǎn),“#”開頭為注釋部分,另外注意修改相應(yīng)配置中的目錄為自己的實(shí)際目錄。
以下Apache配置方法與注釋出自網(wǎng)絡(luò),作者未知。
- # asp.net 支持
- # 這2條配置屬于全局配置,可放在其它響應(yīng) LoadModule/AddHandler 語句塊后面
- # 我的配置中,下面整個配置塊是放在最后,未分開,這也是為了方便管理
- LoadModule aspdotnet_module "modules/mod_aspdotnet.so"
- AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo
- # 下面的整段配置可以放在虛擬主機(jī)中
- < IfModule mod_aspdotnet.cpp>
- # Mount the asp.net example application
- # AspNetMount 語句相當(dāng)于 Linux 中的 mount 命令,是把Asp程序目錄掛載到一個 URL 地址
- # 如果不是整個網(wǎng)站都用Asp,則不應(yīng)該掛在‘/’下。如:AspNetMount /asptool "D:\\www\\Apache2\\htdocs\\aspweb"
- # 注意:整站采用時,全局的DocumentRoot 為 "D:/www/Apache2/htdocs/aspweb"
- AspNetMount / "D:/PHPnow/htdocs"
- # Map all requests for /active to the application files
- # 意思是把所有到‘/asptool’的請求映射到掛載的Asp程序目錄下
- # 我的配置中,下面一句是注釋掉的
- # Alias /asptool "D:/www/Apache2/htdocs/aspweb"
- # Allow asp.net scripts to be executed in the active example
- < Directory "D:/PHPnow/htdocs">
- Options FollowSymlinks ExecCGI
- Order allow,deny
- Allow from all
- DirectoryIndex default.htm default.aspx index.html index.aspx
- < /Directory>
- # For all virtual asp.net webs, we need the aspnet_client files
- # to serve the client-side helper scripts.
- # 注意:下面兩行需要對應(yīng).Net Framework安裝的目錄
- AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/WIN2003/Microsoft.NET/Framework/v$1.$2.$3/asp.netClientFiles/$4"
- < Directory "C:/Windows/Microsoft.NET/Framework/v*/asp.netClientFiles">
- Options FollowSymlinks
- Order allow,deny
- Allow from all
- < /Directory>
- < /IfModule>
- # asp.net 支持 End.
APACHE上運(yùn)行ASP.NET要點(diǎn)四、運(yùn)行并測試網(wǎng)站實(shí)例
完成以上安裝與配置后,你現(xiàn)在可以把自己做的簡單的asp.net站點(diǎn)程序或者下載的簡單的asp.net站點(diǎn)程序放到Apache網(wǎng)站目錄中(htdocs目錄),然后在瀏覽器輸入http://127.0.0.1地址訪問站點(diǎn)。更詳細(xì)信息亦可參考我另外一篇教程《用Zend Studio+PHPnow+Zend Debugger搭建PHP服務(wù)器調(diào)試環(huán)境》。這里我為什么強(qiáng)調(diào)要測試“簡單”的網(wǎng)站呢,因?yàn)槲野l(fā)現(xiàn)這個運(yùn)行環(huán)境還是存在一些問題的,請看我下面第五點(diǎn)說明。
APACHE上運(yùn)行ASP.NET要點(diǎn)五、存在問題
在以上搭建的asp.net運(yùn)行環(huán)境下,我測試了動易的SiteFactory CMS,發(fā)現(xiàn)問題多多,根本無法正常運(yùn)行。據(jù)了解,這個服務(wù)器環(huán)境對.NET的身份驗(yàn)證模式不支持,另外我也發(fā)現(xiàn)對子目錄的支持等也會出現(xiàn)一些奇怪問題,因此可以得出結(jié)論,這個運(yùn)行環(huán)境是有缺陷的,要慎用,小網(wǎng)站、小測試可以試一下。
【編輯推薦】