程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> 在Apache環境下成功的運行ASP.NET的注意事項

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

編輯:ASP.NET基礎
由於公司的產品在新的版本中,需要考慮一些新的部署方式,所以又抽空關注了一下.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.55mod_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模塊載入的,所以又仍然是非大小寫敏感的。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved