在Apache環(huán)境下成功的運行ASP.NET的注意事項
更新時間:2007年08月14日 09:15:24 作者:
由于公司的產(chǎn)品在新的版本中,需要考慮一些新的部署方式,所以又抽空關(guān)注了一下.NET跨平臺的一些解決方案。雖然Mono Project對基于.NET開發(fā)的人來說都不陌生,不過由于Mono是比較狹義的跨平臺(因為它是OS級別的)概念。而從廣義的角度來說,使用不同的Web Server也可以算是一種垮平臺。
緣起是由于IIS的口碑實在太濫,以至于不少的關(guān)鍵應(yīng)用場景明文禁止安裝和使用IIS。而從ASP.NET的執(zhí)行原理來看,它是通過一個Web Server處理tcp請求,然后把對ASPX執(zhí)行和呈現(xiàn)交于使用.NET實現(xiàn)一個托管環(huán)境來進行的。所以使用Apache是目前最經(jīng)濟的IIS替代品,而同時在Apache的sub-project正好有一個支持ASP.NET的模塊,并且已經(jīng)開發(fā)到了2.0版本。我所配合使用的版本是Apache HTTP Server 2.0.55和mod_aspdotnet 2.0.0。安裝非常的簡單,兩個程序都是msi安裝包,一路next就搞定了。完了再在安裝目錄/htdocs下建一個目錄,如:active。
不過其中有兩個小問題需要注意:
一是:在安裝Apache HTTP Server的時候,如果我們機器上的80端口已被占用,需要選使用8080端口來安裝那個選項,當(dāng)然這個端口是可以在httpd.conf文件里修改的。只是使用這種安裝方式安裝好以后需要手動的啟動apache2服務(wù),使用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> 本來這個配置文件很簡單,還有詳細的注釋。不過一定要注意上面的命令(非#開頭的行),都需要寫在一行上,如果是從網(wǎng)頁上copy要特別的小心,特別是AddHandler和AliasMatch這兩句容易被斷成兩行,那樣啟動apache服務(wù)就會失敗,并且提示非常簡單,根本不會告訴你配置文件加載錯誤
。
目前,這個mod_aspdotnet模塊最大的問題是在認證支持上的不足,比如windows和form都還不能支持,不過開源的東西更新還是很快的。由于使用Microsoft .NET Framework作為CLR,開發(fā)更新的壓力和Mono不在一個數(shù)量級上,相信很快就能有對頁面認證的較好支持。
安裝成功后可以運行探針來檢查效果,比如使用邁克老貓同志的ASP.NET探針。
最后一定要注意:由于apache本身對于url的目錄和文件名是大小寫敏感的,所以asp.net的虛擬目錄必須要注意大小寫,否則訪問的時候不會出錯,不過將會找不到任何的文件,就像訪問一個空的目錄一樣。除了虛擬目錄名外,由于其它的aspx文件是mod_aspdotnet模塊載入的,所以又仍然是非大小寫敏感的。
緣起是由于IIS的口碑實在太濫,以至于不少的關(guān)鍵應(yīng)用場景明文禁止安裝和使用IIS。而從ASP.NET的執(zhí)行原理來看,它是通過一個Web Server處理tcp請求,然后把對ASPX執(zhí)行和呈現(xiàn)交于使用.NET實現(xiàn)一個托管環(huán)境來進行的。所以使用Apache是目前最經(jīng)濟的IIS替代品,而同時在Apache的sub-project正好有一個支持ASP.NET的模塊,并且已經(jīng)開發(fā)到了2.0版本。我所配合使用的版本是Apache HTTP Server 2.0.55和mod_aspdotnet 2.0.0。安裝非常的簡單,兩個程序都是msi安裝包,一路next就搞定了。完了再在安裝目錄/htdocs下建一個目錄,如:active。
不過其中有兩個小問題需要注意:
一是:在安裝Apache HTTP Server的時候,如果我們機器上的80端口已被占用,需要選使用8080端口來安裝那個選項,當(dāng)然這個端口是可以在httpd.conf文件里修改的。只是使用這種安裝方式安裝好以后需要手動的啟動apache2服務(wù),使用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>目前,這個mod_aspdotnet模塊最大的問題是在認證支持上的不足,比如windows和form都還不能支持,不過開源的東西更新還是很快的。由于使用Microsoft .NET Framework作為CLR,開發(fā)更新的壓力和Mono不在一個數(shù)量級上,相信很快就能有對頁面認證的較好支持。
安裝成功后可以運行探針來檢查效果,比如使用邁克老貓同志的ASP.NET探針。
| 服務(wù)器基本信息 | |
| 服務(wù)器名稱: birdshome | 服務(wù)器IP地址: 127.0.0.1 |
| .NET Framework語言種類: English (United States) | .NET Framework 版本: 2.050727.29 |
| 服務(wù)器端口: 80 | 服務(wù)器域名: localhost |
| 服務(wù)器時間: 11/18/2005 12:11:39 AM | 服務(wù)器操作系統(tǒng): Microsoft Windows XP |
| 服務(wù)器空間占用: .13 | 站點物理路徑: D:\Program Files\Apache Group\Apache2\htdocs\active\ |
| 服務(wù)器IE瀏覽器版本: 6.0000 | 服務(wù)器IIS版本: Apache/2.0.55 (Win32) |
| 服務(wù)器上次啟動到現(xiàn)在已運行: 12883秒 | 腳本超時: 30000000秒 |
| 虛擬目錄絕對路徑: D:\Program Files\Apache Group\Apache2\htdocs\active\ | 執(zhí)行文件絕對路徑: D:\Program Files\Apache Group\Apache2\htdocs\active\SiteInfo.aspx |
| 服務(wù)器操作系統(tǒng)安裝目錄: C:\WINDOWS | 服務(wù)器應(yīng)用程序安裝目錄: 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%的內(nèi)存正在使用 | 物理內(nèi)存共有510MB |
| 可使用的物理內(nèi)存有126MB | 交換文件總大小為1245MB |
| 尚可交換文件大小為750MB | 總虛擬內(nèi)存有2047MB |
| 未用虛擬內(nèi)存有1817MB | 邏輯驅(qū)動器: A: ||C: ||D: ||E: ||F: ||G: ||H: ||J: ||K: ||L: ||M: |
最后一定要注意:由于apache本身對于url的目錄和文件名是大小寫敏感的,所以asp.net的虛擬目錄必須要注意大小寫,否則訪問的時候不會出錯,不過將會找不到任何的文件,就像訪問一個空的目錄一樣。除了虛擬目錄名外,由于其它的aspx文件是mod_aspdotnet模塊載入的,所以又仍然是非大小寫敏感的。
相關(guān)文章
asp.net(C#)函數(shù)對象參數(shù)傳遞的問題
我們知道在.net里class是引用類型,在函數(shù)參數(shù)表中的對象傳遞的都是對象的引用,所以在函數(shù)體內(nèi)對其對象參數(shù)的修改會影響函數(shù)外對應(yīng)的對象本身,例如下面的程序.2009-12-12
.Net?Core使用Logger實現(xiàn)log寫入本地文件系統(tǒng)
這篇文章介紹了.Net?Core使用Logger實現(xiàn)log寫入本地文件系統(tǒng)的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
.NET Core3.0 日志 logging的實現(xiàn)
這篇文章主要介紹了.NET Core3.0 日志 logging的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
ASP.NET MVC下Ajax.BeginForm方式無刷新提交表單實例
下面小編就為大家分享一篇ASP.NET MVC下Ajax.BeginForm方式無刷新提交表單實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
ASP.NET MVC5網(wǎng)站開發(fā)管理列表、回復(fù)及刪除(十三)
這篇文章主要介紹了ASP.NET MVC5網(wǎng)站開發(fā)實現(xiàn)管理列表、回復(fù)及刪除,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2015-09-09
理解ASP.NET?Core?錯誤處理機制(Handle?Errors)
這篇文章主要介紹了理解ASP.NET?Core?錯誤處理(Handle?Errors)?,在這里需要注意的是,與“異常處理”有關(guān)的中間件,一定要盡早添加,這樣,它可以最大限度的捕獲后續(xù)中間件拋出的未處理異常。感興趣的朋友跟隨小編一起看看吧2021-11-11
asp.net Excel轉(zhuǎn)換為SQL Server的方法
辦公軟件Excel是一種常用的電子表格軟件,在編程項目中有需要將Excel轉(zhuǎn)換為SQL Server數(shù)據(jù)庫的需求,本文對此進行一些介紹并給出設(shè)計代碼。2009-06-06

