在Apache環(huán)境下成功的運行ASP.NET的注意事項
更新時間:2007年08月14日 09:15:24 作者:
由于公司的產品在新的版本中,需要考慮一些新的部署方式,所以又抽空關注了一下.NET跨平臺的一些解決方案。雖然Mono Project對基于.NET開發(fā)的人來說都不陌生,不過由于Mono是比較狹義的跨平臺(因為它是OS級別的)概念。而從廣義的角度來說,使用不同的Web Server也可以算是一種垮平臺。
緣起是由于IIS的口碑實在太濫,以至于不少的關鍵應用場景明文禁止安裝和使用IIS。而從ASP.NET的執(zhí)行原理來看,它是通過一個Web Server處理tcp請求,然后把對ASPX執(zhí)行和呈現(xiàn)交于使用.NET實現(xiàn)一個托管環(huán)境來進行的。所以使用Apache是目前最經濟的IIS替代品,而同時在Apache的sub-project正好有一個支持ASP.NET的模塊,并且已經開發(fā)到了2.0版本。我所配合使用的版本是Apache HTTP Server 2.0.55和mod_aspdotnet 2.0.0。安裝非常的簡單,兩個程序都是msi安裝包,一路next就搞定了。完了再在安裝目錄/htdocs下建一個目錄,如:active。
不過其中有兩個小問題需要注意:
一是:在安裝Apache HTTP Server的時候,如果我們機器上的80端口已被占用,需要選使用8080端口來安裝那個選項,當然這個端口是可以在httpd.conf文件里修改的。只是使用這種安裝方式安裝好以后需要手動的啟動apache2服務,使用cmd命令并進入apache安裝目錄,如:D:\Program Files\Apache Group\Apache2\bin,運行:apache -k install。
二是:在配置aspdotnet_module的時候,我們需要在httpd.conf文件中追加以下清單:
#asp.net
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
<IfModule mod_aspdotnet.cpp>
# Mount the ASP.NET example application
AspNetMount /active "J:/Working/BIVSS"
# Map all requests for /active to the application files
Alias /active "J:/Working/BIVSS"
# Allow asp.net scripts to be executed in the active example
<Directory "J:/Working/BIVSS">
Options FollowSymlinks ExecCGI
Order allow,deny
Allow from all
DirectoryIndex Default.htm Default.aspx
</Directory>
# For all virtual ASP.NET webs, we need the aspnet_client files
# to serve the client-side helper scripts.
AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/Windows/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> 本來這個配置文件很簡單,還有詳細的注釋。不過一定要注意上面的命令(非#開頭的行),都需要寫在一行上,如果是從網頁上copy要特別的小心,特別是AddHandler和AliasMatch這兩句容易被斷成兩行,那樣啟動apache服務就會失敗,并且提示非常簡單,根本不會告訴你配置文件加載錯誤
。
目前,這個mod_aspdotnet模塊最大的問題是在認證支持上的不足,比如windows和form都還不能支持,不過開源的東西更新還是很快的。由于使用Microsoft .NET Framework作為CLR,開發(fā)更新的壓力和Mono不在一個數(shù)量級上,相信很快就能有對頁面認證的較好支持。
安裝成功后可以運行探針來檢查效果,比如使用邁克老貓同志的ASP.NET探針。
最后一定要注意:由于apache本身對于url的目錄和文件名是大小寫敏感的,所以asp.net的虛擬目錄必須要注意大小寫,否則訪問的時候不會出錯,不過將會找不到任何的文件,就像訪問一個空的目錄一樣。除了虛擬目錄名外,由于其它的aspx文件是mod_aspdotnet模塊載入的,所以又仍然是非大小寫敏感的。
緣起是由于IIS的口碑實在太濫,以至于不少的關鍵應用場景明文禁止安裝和使用IIS。而從ASP.NET的執(zhí)行原理來看,它是通過一個Web Server處理tcp請求,然后把對ASPX執(zhí)行和呈現(xiàn)交于使用.NET實現(xiàn)一個托管環(huán)境來進行的。所以使用Apache是目前最經濟的IIS替代品,而同時在Apache的sub-project正好有一個支持ASP.NET的模塊,并且已經開發(fā)到了2.0版本。我所配合使用的版本是Apache HTTP Server 2.0.55和mod_aspdotnet 2.0.0。安裝非常的簡單,兩個程序都是msi安裝包,一路next就搞定了。完了再在安裝目錄/htdocs下建一個目錄,如:active。
不過其中有兩個小問題需要注意:
一是:在安裝Apache HTTP Server的時候,如果我們機器上的80端口已被占用,需要選使用8080端口來安裝那個選項,當然這個端口是可以在httpd.conf文件里修改的。只是使用這種安裝方式安裝好以后需要手動的啟動apache2服務,使用cmd命令并進入apache安裝目錄,如:D:\Program Files\Apache Group\Apache2\bin,運行:apache -k install。
二是:在配置aspdotnet_module的時候,我們需要在httpd.conf文件中追加以下清單:

























目前,這個mod_aspdotnet模塊最大的問題是在認證支持上的不足,比如windows和form都還不能支持,不過開源的東西更新還是很快的。由于使用Microsoft .NET Framework作為CLR,開發(fā)更新的壓力和Mono不在一個數(shù)量級上,相信很快就能有對頁面認證的較好支持。
安裝成功后可以運行探針來檢查效果,比如使用邁克老貓同志的ASP.NET探針。
服務器基本信息 | |
服務器名稱: birdshome | 服務器IP地址: 127.0.0.1 |
.NET Framework語言種類: English (United States) | .NET Framework 版本: 2.050727.29 |
服務器端口: 80 | 服務器域名: localhost |
服務器時間: 11/18/2005 12:11:39 AM | 服務器操作系統(tǒng): Microsoft Windows XP |
服務器空間占用: .13 | 站點物理路徑: D:\Program Files\Apache Group\Apache2\htdocs\active\ |
服務器IE瀏覽器版本: 6.0000 | 服務器IIS版本: Apache/2.0.55 (Win32) |
服務器上次啟動到現(xiàn)在已運行: 12883秒 | 腳本超時: 30000000秒 |
虛擬目錄絕對路徑: D:\Program Files\Apache Group\Apache2\htdocs\active\ | 執(zhí)行文件絕對路徑: D:\Program Files\Apache Group\Apache2\htdocs\active\SiteInfo.aspx |
服務器操作系統(tǒng)安裝目錄: C:\WINDOWS | 服務器應用程序安裝目錄: C:\Program Files |
CPU個數(shù): 本計算機中有1個CPU | CPU類型: x86 Family 15 Model 3 Stepping 3 |
CPU等級: CPU等級為50528271 | CPU OEM ID: CPU的OEM ID為0 |
CPU頁面大?。?CPU中的頁面大小為4096 | |
75%的內存正在使用 | 物理內存共有510MB |
可使用的物理內存有126MB | 交換文件總大小為1245MB |
尚可交換文件大小為750MB | 總虛擬內存有2047MB |
未用虛擬內存有1817MB | 邏輯驅動器: A: ||C: ||D: ||E: ||F: ||G: ||H: ||J: ||K: ||L: ||M: |
最后一定要注意:由于apache本身對于url的目錄和文件名是大小寫敏感的,所以asp.net的虛擬目錄必須要注意大小寫,否則訪問的時候不會出錯,不過將會找不到任何的文件,就像訪問一個空的目錄一樣。除了虛擬目錄名外,由于其它的aspx文件是mod_aspdotnet模塊載入的,所以又仍然是非大小寫敏感的。
相關文章
利用ASP.NET MVC和Bootstrap快速搭建個人博客之文章打賞功能(六)
這篇文章主要介紹了利用ASP.NET MVC和Bootstrap快速搭建個人博客之文章打賞功能(六) 的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-07-07基于.Net中的數(shù)字與日期格式化規(guī)則助記詞的使用詳解
本篇文章是對.Net中的數(shù)字與日期格式化規(guī)則助記詞的使用進行了詳細的分析介紹,需要的朋友參考下2013-05-05C# 動態(tài)編譯、動態(tài)執(zhí)行、動態(tài)調試
前幾天看到一篇關于.net動態(tài)編譯的文章 .NET中的動態(tài)編譯 ,很受啟發(fā)。2009-05-05ASP.NET Core應用錯誤處理之StatusCodePagesMiddleware中間件針對響應碼呈現(xiàn)錯誤頁面
這篇文章主要給大家介紹了關于ASP.NET Core應用錯誤處理之StatusCodePagesMiddleware中間件針對響應碼呈現(xiàn)錯誤頁面的相關資料,需要的朋友可以參考下2019-01-01ASP.NET實現(xiàn)TreeView的XML數(shù)據(jù)源綁定實例代碼
這篇文章介紹了ASP.NET實現(xiàn)TreeView的XML數(shù)據(jù)源綁定實例代碼,有需要的朋友可以參考一下2013-11-11