在Apache環境下成功的運行ASP.NET的注意事項

來源:互聯網
上載者:User

由於公司的產品在新的版本中,需要考慮一些新的部署方式,所以又抽空關注了一下.NET跨平台的一些解決方案。雖然Mono Project對基於.NET開發的人來說都不陌生,不過由於Mono是比較狹義的跨平台(因為它是OS層級的)概念。而從廣義的角度來說,使用不同的Web Server也可以算是一種垮平台。

緣起是由於IIS的口碑實在太濫,以至於不少的關鍵應用情境明文禁止安裝和使用IIS。而從ASP.NET的執行原理來看,它是通過一個Web Server處理tcp請求,然後把對ASPX執行和呈現交於使用.NET實現一個託管環境來進行的。所以使用Apache是目前最經濟的IIS替代品,而同時在Apache的sub-project正好有一個支援ASP.NET的模組,並且已經開發到了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,開發更新的壓力和Mono不在一個數量級上,相信很快就能有對頁面認證的較好支援。

安裝成功後可以運行探針來檢查效果,比如使用邁克老貓同志的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 伺服器作業系統: Microsoft Windows XP
伺服器空間佔用: .13 網站實體路徑: D:\Program Files\Apache Group\Apache2\htdocs\active\
伺服器IE瀏覽器版本: 6.0000 伺服器IIS版本: Apache/2.0.55 (Win32)
伺服器上次啟動到現在已運行: 12883秒 指令碼逾時: 30000000秒
虛擬目錄絕對路徑: D:\Program Files\Apache Group\Apache2\htdocs\active\ 執行檔案絕對路徑: D:\Program Files\Apache Group\Apache2\htdocs\active\SiteInfo.aspx
伺服器作業系統安裝目錄: C:\WINDOWS 伺服器應用程式安裝目錄: C:\Program Files
CPU個數: 本電腦中有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模組載入的,所以又仍然是非大小寫敏感的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.