aspnet如何預編譯
㈠ 如何構建ASP.NET 的運行環境
安裝IIS6.0,在IIS6.0的配合下我們如何來安裝和部署ASP.net環境,以及它們之間關系。
1、使用"配置您的伺服器向導"安裝 IIS6.0
1)從"開始"菜單,單擊"管理您的伺服器"。
2)在"管理您的伺服器角色"下,單擊"添加或刪除角色"。
3)閱讀"配置您的伺服器向導"中的預備步驟,然後單擊"下一步"。
4)在"伺服器角色"下,單擊"應用程序伺服器 (IIS,ASP.NET)",然後單擊"下一步"。
5)閱讀概要信息,然後單擊"下一步"。
6)單擊"完成"。
2、使用控制面板安裝 IIS、添加組件或刪除組件
1)從"開始"菜單,單擊"控制面板"。
2)雙擊"添加或刪除程序"。
3)單擊"添加/刪除 Windows 組件"。
4)在"組件"列表框中,單擊"應用程序伺服器"。
5)單擊"詳細信息"。
6)單擊"Internet 信息服務管理器"。
7)單擊"詳細信息"以查看 IIS 可選組件的列表。
8)選擇要安裝的所有可選組件。
9)單擊"確定",直到返回到"Windows 組件向導"。
10)單擊"下一步",然後完成"Windows 組件向導"。
三、在Windows 2003 Server 安裝 ASP.NET
Windows Server 2003 家族利用 ASP.NET 和 IIS 集成改善了開發人員體驗。ASP.NET 識別大多數 ASP 代碼,同時為創建可作為 Microsoft .NET Framework 的一部分工作的企業級 Web 應用程序提供更多的功能。使用ASP.NET 允許我們充分利用公共語言運行庫的功能,如類型安全、繼承、語言互操作性和版本控制。IIS 6.0 還為最新的 Web 標准,包括 XML、簡單對象訪問協議 (SOAP) 和 Internet 協議版本 6.0 (IPv6.0),提供支持。
ASP.NET 是一個統一的 Web 開發平台,它提供開發人員創建企業級 Web 應用程序所需的服務。盡管 ASP.NET 的語法基本上與 ASP 兼容,但是它還提供了一個新的編程模型和基礎結構以提高應用程序的安全性、縮放性和穩定性。通過逐漸向現有的 ASP 應用程序增加 ASP.NET 功能,我們可以自由地使其增大。ASP.NET 是一個編譯的、基於 .NET 的環境;我們可以用任何 .NET 兼容的語言(包括 Microsoft Visual Basic.NET,Microsoft Visual C# 和 Microsoft JScript .NET)創作應用程序。另外,整個 Microsoft .NET Framework 可用於任何 ASP.NET 應用程序。開發人員可以很容易地從這些技術受益,這些技術包括管理的公共語言運行庫環境、類型安全、繼承等。
ASP.NET的優點如下:
1)可管理性: ASP.NET 使用基於文本的、分級的配置系統,簡化了將設置應用於伺服器環境和 Web 應用程序的工作。因為配置信息是存儲為純文本的,因此可以在沒有本地管理工具的幫助下應用新的設置。配置文件的任何變化都可以自動檢測到並應用於應用程序。
2)安全: ASP.NET 為 Web 應用程序提供了默認的授權和身份驗證方案。開發人員可以根據應用程序的需要很容易地添加、刪除或替換這些方案。
3)易於部署: 通過簡單地將必要的文件復制到伺服器上,ASP.NET 應用程序即可以部署到該伺服器上。不需要重新啟動伺服器,甚至在部署或替換運行的已編譯代碼時也不需要重新啟動。
4)增強的性能: ASP.NET 是運行在伺服器上的已編譯代碼。與傳統的 Active Server Pages (ASP) 不同,ASP.NET 能利用早期綁定、實時 (JIT) 編譯、本機優化和全新的緩存服務來提高性能。
5)靈活的輸出緩存: 根據應用程序的需要,ASP.NET 可以緩存頁數據、頁的一部分或整個頁。緩存的項目可以依賴於緩存中的文件或其他項目,或者可以根據過期策略進行刷新。
6)國際化: ASP.NET 在內部使用 Unicode 以表示請求和響應數據。可以為每台計算機、每個目錄和每頁配置國際化設置。
7)移動設備支持: ASP.NET 支持任何設備上的任何瀏覽器。開發人員使用與用於傳統的桌面瀏覽器相同的編程技術來處理新的移動設備。
8)擴展性和可用性: ASP.NET 被設計成可擴展的、具有特別專有的功能來提高群集的、多處理器環境的性能。此外,Internet 信息服務 (IIS) 和 ASP.NET 運行時密切監視和管理進程,以便在一個進程出現異常時,可在該位置創建新的進程使應用程序繼續處理請求。
9)跟蹤和調試: ASP.NET 提供了跟蹤服務,該服務可在應用程序級別和頁面級別調試過程中啟用。可以選擇查看頁面的信息,或者使用應用程序級別的跟蹤查看工具查看信息。在開發和應用程序處於生產狀態時,ASP.NET 支持使用 .NET Framework 調試工具進行本地和遠程調試。當應用程序處於生產狀態時,跟蹤語句能夠留在產品代碼中而不會影響性能。
10)與 .NET Framework 集成: 因為 ASP.NET 是 .NET Framework 的一部分,整個平台的功能和靈活性對 Web 應用程序都是可用的。也可從 Web 上流暢地訪問 .NET 類庫以及消息和數據訪問解決方案。ASP.NET 是獨立於語言之外的,所以開發人員能選擇最適於應用程序的語言。另外,公共語言運行庫的互用性還保存了基於 COM 開發的現有投資。
11)與現有 ASP 應用程序的兼容性: ASP 和 ASP.NET 可並行運行在 IIS Web 伺服器上而互不沖突;不會發生因安裝 ASP.NET 而導致現有 ASP 應用程序崩潰的可能。ASP.NET 僅處理具有 .aspx 文件擴展名的文件。具有 .asp 文件擴展名的文件繼續由 ASP 引擎來處理。然而,應該注意的是會話狀態和應用程序狀態並不在 ASP 和 ASP.NET 頁面之間共享。
安裝 ASP.NET
在 Windows Server 2003 家族、Windows 2000 (Professional、Server 和 Advanced Server)以及 Windows XP Professional 上的客戶端和伺服器應用程序都支持 ASP.NET。
運行 Microsoft Windows Server 2003 家族成員的伺服器可以配置為應用程序伺服器,並將 ASP.NET 作為在配置應用程序伺服器角色時可以啟用的選項。要向產品伺服器部署 ASP.NET Web 應用程序,在分發應用程序之前,必須確保在產品伺服器中啟用了 ASP.NET 和 IIS 角色。
1、使用"配置您的伺服器"向導在運行 Windows Server 2003 的伺服器中安裝 ASP.NET
1)從"開始"菜單中,單擊"管理您的伺服器";在"管理您的伺服器"窗口中,單擊"添加或刪除角色"。
2)在"配置您的伺服器向導"中,單擊"下一步",並在"伺服器角色"對話框中,選中"應用程序伺服器 (IIS、ASP.NET)",然後單擊"下一步"。
3)在"應用程序伺服器選項"對話框中,選中"啟用 ASP.NET"復選框,單擊"下一步",然後再單擊"下一步"。
4)如有必要,請將 Windows Server 2003 安裝 CD 插入 CD-ROM 驅動器,然後單擊"下一步"。
5)當安裝完成時,單擊"完成"。
2、在運行 Windows Server 2003 的伺服器中使用"添加或刪除程序"安裝 ASP.NET
1)從"開始"菜單中,指向"控制面板",然後單擊"添加或刪除程序"。
2)在"添加或刪除程序"對話框中,單擊"添加/刪除 Windows 組件"。
3)在"Windows 組件"向導中的"組件"中,選中"應用程序伺服器"復選框,然後單擊"下一步"。
4)當在"Windows 組件"向導中完成對 Windows Server 2003 的配置時,單擊"完成"。
3、在運行 Windows Server 2003 的伺服器中的 IIS 管理器中啟用 ASP.NET
1)從"開始"菜單中,單擊"運行"。
2)在"運行"對話框中的"打開"框中,鍵入 inetmgr,然後單擊"確定"。
3)在 IIS 管理器中,展開本地計算機,然後單擊"Web 服務擴展"。
4)在右側窗格中,右鍵單擊"ASP.NET"然後單擊"允許"。ASP.NET 的狀態變為"允許"。
ASP.NET Web 應用程序的布局
ASP.NET 應用程序被定義為可從 Web 伺服器上的虛擬目錄及其子目錄中調用的所有文件和可執行碼。其中可以包含網頁(.html 文件)、Web 表單頁面(.aspx 文件)、Web 表單用戶控制項(.ascx 文件)、XML Web 服務(.asmx 文件)、HTTP 處理程序、HTTP 模塊和其他文件(如圖像和配置文件)。現在使用的所有與 Microsoft .NET Framework 版本相關的腳本映射也都是 ASP.NET 應用程序的一部分。ASP.NET 應用程序必須位於 IIS 虛擬目錄(也稱為應用程序根目錄)中。ASP.NET 應用程序可包含已編譯的程序集(通常是包含業務邏輯的 DLL 文件)、用於存儲預編譯代碼的已知目錄(目錄名總是 \Bin)、存儲在基於文本的、易讀的 Web.config 文件中的配置設置、頁、伺服器控制項,以及 XML Web 服務。
伺服器中任何不與其他應用程序共享的預編譯代碼必須存儲在應用程序的 \Bin 目錄中。它是應用程序的本地程序集緩存。Web.config 文件在基於 XML 的文本文件中存儲應用程序級的配置文件。這意味著可以使用任意標準的文本編輯器或 XML 分析器來創建它們,而且它們是可讀的。如果不在應用程序根目錄中包含 Web.config 文件,則配置設置由 Machine.config 文件中整個伺服器的配置文件來確定。安裝 .NET Framework 時,會安裝 Machine.config 文件的某個版本。
下圖顯示了 ASP.NET 應用程序文件系統布局的示例。
本圖中的應用程序包括 \Bin 目錄中的兩個 DLL 文件、一個 Default.aspx 頁,一個名為 Menu.ascx 的用戶控制項、一個名為 MyWebService.asmx 的 XML Web 服務以及一個 Global.asax 文件。另外,該應用程序是使用下列三個配置文件配置的:系統根目錄中計算機級別的 Machine.config 文件、C:\Inetpub\Wwwroot 目錄中站點級別的 Web.config 文件和應用程序根目錄中應用程序級別的 Web.config 文件。當站點的 Web.config 文件覆蓋 Machine.config 文件中的設置時,在應用程序根目錄中存儲的配置設置將覆蓋站點的 Web.config 文件和 Machine.config 文件中的設置。
ASP.NET與IIS、ASP 之間的比較
ASP.NET 應用程序與 Internet 信息服務 (IIS) 之間的關系如下:IIS 通過 aspnet_isapi.dll(ASP.NET 的進程模型)對可發布的 ASP.NET 文件的所有請求提供服務。IIS 不會處理伺服器端的代碼;而 ASP.NET 引擎則會處理伺服器端代碼,然後將輸出返回給 IIS(如果可能,或另一個 Web 伺服器)。
ASP.NET 並非僅僅是下一代的ASP,它為創建利用 Internet 的網路應用程序提供了全新的編程模型。ASP.NET與ASP比較的特點如下:
1、改進的性能和可伸縮性
1)編譯後執行:ASP.NET 比傳統 ASP 的運行速度更快,同時保留了 ASP"只需點擊保存"的更新模型。無需顯式的編譯步驟。ASP.NET 自動檢測變化,根據需要動態編譯文件,並且保存編譯結果以便後續的請求再次使用。動態編譯保證了用戶的應用程序總是最新的,並且編譯後執行的操作會使其運行速度更快。對於多數從傳統的 ASP 遷移到 ASP.NET 的應用程序,其處理的頁數增長了 3 至 5 倍。
2)大容量輸出緩存:ASP.NET 輸出緩存極大地改進了應用程序的性能和可伸縮性。當在頁面中啟用輸出緩存時,ASP.NET 就會執行一次該頁並將結果在發送至用戶之前保存在內存中。當其他用戶請求同一頁面時,ASP.NET 使用內存中的緩存結果向用戶提供服務,而不是重新執行該頁面。輸出緩存是可配置的,並且可以用來緩存單個區域或整個頁面。
3)Web 場會話狀態:ASP.NET 會話狀態允許我們在 Web 場中的所有計算機之間共享會話數據。現在,用戶可以通過多個請求訪問 Web 場中不同的伺服器,並且仍然具有完全訪問會話數據的許可權。
2、增強的可靠性
內存泄漏、死鎖和故障保護:ASP.NET 自動檢測錯誤(例如,死鎖和內存泄漏)並進行恢復以確保我們的應用程序始終可用。例如,當檢測到內存泄漏時,ASP.NET 將自動啟動新的 ASP.NET 工作進程副本,並將所有的新請求定向到該進程。當舊進程完成掛起請求的處理後,會經過適當的處置並釋放泄漏的內存。
3、部署簡單
1)"非接觸式"應用程序部署:使用 ASP.NET,我們可以通過將其復制到伺服器來進行整個應用程序的部署。配置設置將存儲在應用程序的 XML 文件中。
2)動態更新運行的應用程序:ASP.NET 允許我們不必重新啟動 Web 伺服器而更新已編譯的組件。與傳統的 COM 組件(這些組件需要在部署更新後手動重新啟動 Web 伺服器)不同,ASP.NET 自動檢測更改並使用新的代碼啟動。
3)遷移路徑簡單:ASP.NET 可以和傳統的 ASP 應用程序一起在 Microsoft Windows 2000、Windows XP、以及 Windows Server 2003 家族成員的 IIS 上運行。我們可以一次遷移一個應用程序,甚至是單獨的頁面。ASP.NET 甚至允許我們繼續使用現有的傳統 COM 商務組件。
4、新的應用程序模型
1)XML Web 服務:XML Web 服務允許應用程序通過 Internet 進行通信和共享數據,而不管操作系統和編程語言如何。ASP.NET 使得公開和調用 XML 網路服務變得簡單。
2)移動 Web 設備支持:ASP.NET 移動控制項允許我們處理超過 80 台使用 ASP.NET 的移動 Web 設備。我們只需一次性寫入應用程序,移動控制項就能自動生成請求設備的頁面。
5、開發人員的效率
1)簡單的編程模型:具有伺服器控制項(這些控制項允許我們使用比傳統 ASP 更少的代碼來構建效果極佳的頁面)的 ASP.NET 使得動態構建真實的 Web 應用程序變得更加容易。
2)靈活的語言選項:ASP.NET 不僅支持 Microsoft Visual Basic Scripting Edition (VBScript) 和 Microsoft JScript,而且支持 25 種以上的 .NET 語言,包括對 Visual Basic .NET、Microsoft C# 和 JScript .NET 的內置支持。
3)豐富的類框架:.NET Framework 類庫提供了 4500 多種類,這些類封裝了大量的功能,諸如 XML、數據訪問、文件上載、正則表達式、圖像生成、性能監視和日誌記錄、事務、消息隊列和 SMTP 郵件。
http://www.knowsky.com/4195.html
http://www.pconline.com.cn/pce/empolder/net/asp/0509/703426.html
上面說的都很詳細
㈡ 用aspnet
在 模型中 vs 已經完全脫離了編譯而成為了一個徹底的ide 算是一個不小的改動 其中更是取消了有關Web Application的概念 使得習慣了vs 的人剛開始的時候會有一些摸不著頭腦 下面簡單說一下我在使用過程中自己總結的 算是一點經驗
新建web工程並且位置是文件系統的時候 vs 只是幫你建好了一個sln文件 這個東西只是指引m *** uild 如何進行編譯的 過程是 ide 調用 m *** uild m *** uild解析sln文件 m *** uild調用aspnet_piler exe進行網站的編譯 所以aspnet_piler exe只是負責進行網站的編譯的
預編譯的概念在framework 裡面就存在了 vs 中的預編譯指的是將頁面對應的cs/vb文件與resx文件編譯後統一集成到一個dll中放到bin目錄下 將aspx文件直接拷貝過去 這樣做會留下隱患 因為aspx文件就直接暴露在最後的發行包中 如果完全是codeb behind模型還好 只能改改界面 如果採用了頁面上的來生成頁面 源代碼就暴露了 針對這些問題 vs 採用了一種新的模式
請參看ASP NET 編譯工具 (Aspnet_piler exe) 這篇文章了解對各種文件的處理方式
IDE發布
vs 中選擇 生成 〉發布網站 在對話框中的操作將映射到aspnet_piler exe的參數中 可更新的發布對應 u 其他選項類似 請參考上面的文章了解
注意 發布時將忽略nfig中的debug?問騁簧晌薜魘孕畔⒌奈募?
手工編譯
簡單說來 如果是無更新發布模式編譯 appcode下面的class編譯成dll放在bin下 頁面內容清空位置不變作佔位用 同時頁面被編譯成一個隨機名稱的dll 增加一個同piled文件到bin目錄下 內容大概如下
<?xml version= encoding= utf ?>
<preserve resultType= virtualPath= /Forum/AdminList aspx hash= c filehash= f d c flags= assembly= App_Web_hmrycg w type= ASP forum_adminlist_aspx >
<filedeps>
<filedep name= /Controls/footer ascx />
<filedep name= /Controls/header ascx />
<filedep name= /Forum/AdminList aspx />
<filedep name= /Forum/AdminList aspx cs />
<filedep name= /Forum/menu ascx />
<filedep name= /Forum/menu ascx cs />
</filedeps>
</preserve>
裡面只是列出了頁面上的customcontrol 這里已經完成了和masterfile的映射 這樣最大限度的保護了頁面的敏感信息 發布過的網站中只能看見一堆文件名了 可更新的發布模式與vs 類似 頁面就直接拷貝過來不予編譯了
講了一堆原理 下面說一下aspnet_piler exe的調用方法 這是我使用的例子
我的開發目錄是這樣的
Project/
library/
devroot/
pubroot/
proj sln
使用的命令如下
aspnet_piler v / p devroot f pubroot
分析
v / 指明了iis的虛擬目錄
p devroot 表示代碼實際位置
pubroot 指明了要發布的位置
f 表示強制改寫目標位置
lishixin/Article/program/net/201311/13677
㈢ 關於VS2003編譯出現的幾種常見難點
選擇最佳的VS2003編譯選項要由具體的情況和需要決定,但VS2003編譯模型要有靈活性。即使選擇使用 \app_code 目錄來存儲代碼隱藏文件,您仍可以使用完整的編譯方法來部署應用程序。ASP.NET 1.x中的編譯ASP.NET1.x 中的主要編譯模型會導致一個應用程序程序集(包含所有的已編譯代碼隱藏文件和其他的源代碼)和一個為每個被請求的 ASPX 頁而創建的臨時程序集。在有些情況下,編譯器優化(例如批處理)會引起將臨時 ASPX 頁編譯到同一個程序集中。在任一種情況下,每個 ASPX 頁都編譯到一個臨時程序集中,這樣它可以載入到 ASP.NET 運行庫。雖然這種模型有優點,但它也有兩個主要缺點。首先,ASPX 頁必須要以人們可以閱讀的形式部署到 Web 站點。如果開發人員使用代碼內聯 模型,這意味著,一些(或所有)的業務邏輯也可以部署在生產伺服器上。雖然沒有將 IIS 和 ASP.NET 配置為公開原始的 ASPX 頁,但聰明的攻擊者仍可以通過任何攻擊(該攻擊打開到 Web 伺服器的通道)來訪問這些文件。其次,第一次有人請求某 Web 頁時,響應速度將比正常速度慢一些,原因在於 ASP.NET 運行庫必須編譯 ASPX 頁。這整個過程中,開發人員擁有的唯一控制權是決定是否批編譯 ASPX 頁。在 ASP.NET 1.x 中,可以通過修改 標記在 web.config 文件中配置批編譯。ASP.NET 2.0 中的編譯ASP.NET 2.0 為 Web 應用程序提供三種不同的VS2003編譯模型:普通(ASP.NET 1.x) — 在一個普通的 ASP.NET Web 應用程序中,代碼隱藏文件被編譯到一個程序集並存儲在 /bin 目錄中。根據要求編譯 Web 頁 (ASPX)。該模型對大多數 Web 站點都運行得不錯。但是,編譯過程使得第一次請求 ASP.NET 頁時的速度比隨後的請求速度緩慢。ASP.NET 2.0 繼續支持這種編譯模型。部署預編譯 — ASP.NET 2.0 的一種新功能,允許在部署前對項目進行完整編譯。在完整編譯中,所有的代碼隱藏文件、ASPX 頁面、HTML、圖形資源以及其他的後端代碼都被編譯到一個或多個可執行程序集中,這取決於應用程序的大小和編譯設置。這些程序集包含所有的已編譯 Web 站點代碼,而資源文件和配置文件被復制,沒有做修改。這種編譯方法以犧牲修改部署後 Web 站點的能力為代價,提供了最好的性能和安全性。如果您使用高可見或高安全的 Web 站點,這種選項是最終部署的最好選擇。但是,如果您正在構建一個運行局部 Intranet 的小站點,並且更改站點非常頻繁,那麼完整預編譯可能有點過分。 ASP.NET 2.0 編譯模型也允許預編譯應用程序的所有代碼隱藏文件並且仍可以更新代碼。可以將代碼隱藏文件和原始的 .ASPX 文件(都是局部類)編譯到一個預編譯類中(頁面的基類)。如果選擇在運行時編輯 .ASPX 文件,只需重新編譯頁面即可。完整的運行時編譯 — 在部署預編譯的另一個極端,ASP.NET 2.0 提供一種在運行時編譯整個應用程序的新機制。也就是說,可以將未編譯的代碼隱藏文件和其他相關的代碼放在 \app_code 目錄中,並讓 ASP.NET 2.0 創建並維護對程序集的引用,這些引用將在運行時根據這些文件生成。這種選項以在伺服器上存儲未編譯代碼為代價,在更改 Web 站點內容方面提供了最大的靈活性。 選擇最佳的編譯選項要由具體的情況和需要決定,但編譯模型要有靈活性。即使選擇使用 \app_code 目錄來存儲代碼隱藏文件,您仍可以使用完整的編譯方法來部署應用程序。VS2003編譯批編譯在ASP.NET 2.0 中,可以利用單個 URL 請求來批編譯任何應用程序。如同 ASP.NET 1.x 一樣,批編譯消除了第一次頁面請求的延時,但造成了更長的啟動周期。另外,批編譯還要求在部署前編譯代碼隱藏文件。Web.config 批編譯設置在 ASP.NET 2.0 中仍起作用。批編譯的優點是,第一個用戶可以立即使用頁面,而且在批編譯期間可以檢測到 ASPX 頁中的任何錯誤。但是,批編譯的確增加了應用程序啟動的延時,並且必須要內置在 Web.config 文件中。應當注意,如果某個文件出現了問題,則該批將不會接收它。部署預VS2003編譯部署預編譯允許創建一個或多個程序集,這些程序集是 Web 站點的可執行版本。所獲得的程序集包含 Web 站點的已編譯代碼。HTML 頁面、資源、配置文件和 ASPX 頁面被單獨復制。部署預編譯要求使用一個稱為 ASPnet_compiler.exe 的命令行實用程序。該實用程序創建一個目標部署目錄,該目錄包含一個含有程序集的 /bin 目錄和各種 ASPX 頁的 stub 文件。該實用程序還用來在原地進行預編譯,類似於調用"魔術頁"的行為。stub 文件共享 ASPX 頁的名稱,但是包含調用已編譯程序集的簡單代碼。換句話說,ASPX 頁只是空殼而不是填滿的功能頁。通過為部署預編譯 Web 站點,您可以獲得增強的安全性,因為只有進行反編譯程序集才能訪問您的代碼。為了增強保護,可以弄亂所得到的程序集,使您的 Web 應用程序更加安全。部署預編譯的主要缺點是,在部署前必須執行這些步驟,並且在部署後不能更改 Web 站點。如果想進行更改,就必須重新編譯該 Web 站點並重新部署它。對於大多數主要的 Web 應用程序,部署預編譯選項將是部署的首選機制源碼天空,因為它減少了在 Web 伺服器上部署的原始代碼數量,並提供了最佳的安全性。這個增加的進程可以內置於通常的開發/測試/部署周期中,而工作效率並不會有多大損失。
㈣ 誰能介紹下asp.net(我是初學者)
ASP .NET是.NET Framework的一部分。NET Framework是一個用來建立、運行Web應用程序的通用環境。.NET Framework包含一個CLR和通用類庫,支持ADO .NET,ASP .NET和Windows表單.支持 C++, C#,VB和JScript(Microsoft版JavaScript)。Vs.NET是一個用於.NET Framework的開發環境。
ASP .NET可以使用ADO .NET。支持VB(不是VBScript),支持 C# C++。Jscript。涉及到安全方面有用戶身份驗證,賬戶和角色賦予等
身份驗證:1,表單身份驗證 在用戶提供憑據並提交該表單後,以 Cookie 的形式發出身份驗證票證。此 Cookie 包含憑據或用於重新獲取標識的密鑰。瀏覽器的後續請求自動包含此 Cookie。
2,Windows 身份驗證
IIS 執行身份驗證,並將經過身份驗證的標記傳遞給 ASP.NET 工作進程。在將請求傳遞給 ASP.NET 之前,您可能需要使用 Windows 身份驗證來模擬 IIS 進行驗證的 Windows 用戶帳戶。
3,Passport 身份驗證
Microsoft 提供的集中式身份驗證服務,它為成員站點提供單一登錄和核心配置文件服務。
4,默認身份驗證
匿名訪問
相關配置在web.config中
<authentication> 部分
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfauthenticationsection.asp
• <authorization> 部分
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfauthorizationsection.asp
• <identity> 部分
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfidentitysection.asp
• <machineKey> 部分
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfmachinekeysection.asp
涉及2個類是FileAuthorizationMole和UrlAuthorizationMole,前者針對文件,通過windows ACL檢查某用戶知否有訪問許可權,在MODE= Windows 身份驗證時處於活動狀態。後者針對URI命名空間來允許或拒絕用戶/角色的GET/POST等的訪問
代碼舉例:
if ( User.IsInRole("BUILTIN\\Administrators"))
Response.Write("You are an Admin");
else if (User.IsInRole("BUILTIN\\Users"))
Response.Write("You are a User");
else
Response.Write("Invalid user");
以上用於檢查用戶角色,用戶的標識是Windows 標識 (User.Identity.Name = "Domain\username")。這表明應該是啟用了 Windows身份驗證和模擬。
如果使用的是表單身份驗證,則不會為經過驗證的用戶分配角色,使用 OnAuthenticate事件創建新的 GenericPrincipal對象,並更新HttpContext 的 User 屬性。
Visual C# .NET 代碼
public void Application_AuthenticateRequest(Object s, EventArgs e)
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" )
{
System.Web.Security.FormsIdentity id = HttpContext.Current.User.Identity;
String[] myRoles = new String[3];
myRoles[0]= "managers";
myRoles[1]= "testers";
myRoles[2]= "developers";
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);
}
}
}
以上代碼發生於OnAuthenticate事件,下面檢查用戶是否屬於特定的角色並相應地限制其訪問許可權,在 .aspx 頁中代碼
if (User.IsInRole("managers"))
Response.Write("You are a Manager");
else if (User.IsInRole("testers"))
Response.Write("You are a Tester");
else if (User.IsInRole("developers"))
Response.Write("You are a Developer");
asp.net的組成
從程序員的角度講,asp.net由如下的文件和文件夾組成:
.dll,用於控制項、組件或者需要引用的任何代碼的可部署程序集(assembly)。放於bin目錄下
.browser,ASP.NET用它來識別各瀏覽器。於App_Browser文件夾
.cs、.vb、.xsd,自定義的文件類型(通過創建繼承於BuildProvider的子類完成),包含作為應用程序的一部分編譯的類的源文件。當頁面被請求時,ASP.NET編譯該文件夾中的代碼。該文件夾中的代碼在應用程序中自動地被引用。在使用ASPNET_Compiler.exe預編譯網站後(非動態編譯),這些隱藏代碼可以脫離部署
.mdb、.mdf、.xml,Access和SQL Express文件及XML或其他資料庫文件。
.resx,以編程方式使用的資源文件。
.skin、.CSS、.xsl,附屬文件,包含一組定義ASP.NET頁面和控制項外觀的文件。
.wsdl,包含用以生成代理類的WSDL文件,以及與在應用程序中使用Web服務有關的其他文件。
app_code文件夾:自動編譯/動態編譯後生成的程序集,每種語言生成一個子文件夾,詳細信息:http://msdn.microsoft.com/zh-cn/library/t990ks23(VS.80).aspx
自動編譯的web.config配置:http://msdn.microsoft.com/zh-cn/library/system.web.configuration.systemwebsectiongroup.compilation(VS.80).aspx
App_GlobalResources和App_LocalResources文件夾:資源文件夾
㈤ VS2005 debug編譯和msbuild編譯 有什麼區別
用aspnet_compiler發布網站在asp.net 2.0模型中,vs2005已經完全脫離了編譯而成為了一個徹底的ide.算是一個不小的改動。其中更是取消了有關Web Application的概念,使得習慣了vs2003的人剛開始的時候會有一些摸不著頭腦。下面簡單說一下我在使用過程中自己總結的,算是一點經驗。
新建web工程並且位置是文件系統的時候,vs2005隻是幫你建好了一個sln文件,這個東西只是指引msbuild 如何進行編譯的,過程是:ide 調用 msbuild ,msbuild解析sln文件,msbuild調用aspnet_compiler.exe進行網站的編譯。所以aspnet_compiler.exe只是負責進行網站的編譯的。
預編譯的概念在 .netframework 1.1 裡面就存在了,vs2003中的預編譯指的是將頁面對應的cs/vb文件與resx文件編譯後統一集成到一個dll中放到bin目錄下,將aspx文件直接拷貝過去。這樣做會留下隱患,因為aspx文件就直接暴露在最後的發行包中,如果完全是codeb-behind模型還好,只能改改界面,如果採用了頁面上的來生成頁面,源代碼就暴露了。針對這些問題,vs2005採用了一種新的模式。
請參看ASP.NET 編譯工具 (Aspnet_compiler.exe) 這篇文章了解對各種文件的處理方式。
IDE發布:
vs2005中選擇 生成-〉發布網站,在對話框中的操作將映射到aspnet_compiler.exe的參數中,可更新的發布對應 -u,其他選項類似,請參考上面的文章了解。
注意:發布時將忽略web.config中的debug參數,統一生成無調試信息的文件。
手工編譯:
簡單說來,如果是無更新發布模式編譯,appcode下面的class編譯成dll放在bin下,頁面內容清空位置不變作佔位用,同時頁面被編譯成一個隨機名稱的dll,增加一個同名.compiled文件到bin目錄下,內容大概如下:
<?xml version="1.0" encoding="utf-8"?>
<preserve resultType="3" virtualPath="/Forum/AdminList.aspx" hash="6772609c3" filehash="49154463f1d6738c" flags="110000" assembly="App_Web_hmrycg3w" type="ASP.forum_adminlist_aspx">
<filedeps>
<filedep name="/Controls/footer.ascx" />
<filedep name="/Controls/header.ascx" />
<filedep name="/Forum/AdminList.aspx" />
<filedep name="/Forum/AdminList.aspx.cs" />
<filedep name="/Forum/menu.ascx" />
<filedep name="/Forum/menu.ascx.cs" />
</filedeps>
</preserve>
裡面只是列出了頁面上的customcontrol,這里已經完成了和masterfile的映射。這樣最大限度的保護了頁面的敏感信息,發布過的網站中只能看見一堆文件名了。可更新的發布模式與vs2003類似,頁面就直接拷貝過來不予編譯了。
講了一堆原理,下面說一下aspnet_compiler.exe的調用方法,這是我使用的例子
我的開發目錄是這樣的
Project/
library/
devroot/
pubroot/
proj.sln
使用的命令如下:
aspnet_compiler -v / -p .\devroot -f .\pubroot
分析:
-v / 指明了iis的虛擬目錄
-p .\devroot 表示代碼實際位置
.\pubroot 指明了要發布的位置
-f 表示強制改寫目標位置
你還可以用-u來進行傳統意義上的預編譯,-d來插入編譯符號。
總的來說,aspnet_compile結合msbuild,提供了一個很好的自動化編譯環境,值得研究研究:)
㈥ 如何:預編譯 ASP.NET 網站項目以進行部署
預編譯以進行部署的網站項目使您能夠將站點部署到成品伺服器,並且不必部署源代碼。
可以選擇預編譯代碼和頁以及用戶控制項(.aspx、.ascx 或 .master 文件),或者僅預編譯代碼。
如果只預編譯代碼,則可以更新站點的用戶界面,而無需重新編譯整個站點。
本主題中的過程使用 ASP.NET 編譯工具 (Aspnet_compiler.exe) 的開關和參數。
有關此工具的更多信息,請參見
ASP.NET 編譯工具 (Aspnet_compiler.exe)。
有關預編譯的更多信息,請參見
ASP.NET 預編譯概述。
㈦ 如何發布.net網站
第一種方法:
使用XCOPY部署
使用命令如下:
x e:\Web的安裝部署 c:\temp /e /k /r /o /h /I
執行後,會將當前的應用"Web的安裝部署"的所有文件拷貝到c盤的TEMP目錄中去,之後,在IIS中創建虛擬目錄,指向該目錄就可以了。
第二種方法:
在ASP.NET 2.0中,提供一種更新的編譯部署方式,叫Precompilation deployment(部署預編譯)。Net Framework 2.0提供了一個命令行的工具(aspnet_compiler.exe),可以將WebApp中所有的代碼、頁面(包括HTML)、靜態文件全部編譯進dll,然後進行部署,得到的目標系統中,只包含編譯後的dll,甚至連HTML頁面文件都是不存在的,大大增強了系統的安全性,但是瀏覽起來和普通的ASP.NET 應用沒有任何區別。使用方法如下:
aspnet_compiler.exe 一般在WINNT目錄下的.net framework 2.0子目錄下可以找到,使用格式為:
aspnet_compiler -v /<websitename> -p <source> <destination>
其中,websitename為你要部署的web應用程序的虛擬目錄名,<source>為你要部署的web應用程序的物理路徑,〈destination>為即將部署的應用程序的目標物理路徑
比如:
在VS命令中輸入 aspnet_compiler -v /Web的安裝部署 -p e:\Web的安裝部署 c:\compiled
則所有的文件都會被部署預編譯到c盤的compiled目錄下,而且該目錄下,你會發現沒有任何的代碼文件和HTML文件了。
㈧ 如何使aspnet
在用戶表上新建一個欄位limits ,例如:遊客為0,用戶為1,管理員為3,在點擊修改或添加使,取出這個欄位進行判斷。當為0時,彈出對話框「對不起,您無此許可權」;當為1時,彈出對話框「對不起,您無此許可權」;當為3時,就直接操作就行。
㈨ 沒有VS軟體,編寫的ASP.net web應用程序能使用嗎
vs只是一個便於編寫.net程序的工具而已,同時它也集成了iis中的功能。而asp.net運行的條件與是否安裝vs沒有關系,關鍵要有.net framework,即.net框架,另外看你的.net程序版本,只要運行你的程序的.net版本大於等於你自己機器上使用的版本即可以正常運行。
㈩ 網上下載的asp.net網站,vs調試時總出現下面的問題
IIS沒配置好啊
