天天看點

asp .net 預編譯處理 asp.net 程式加密

今天需要預編譯一下自己的Web應用程式,因為考慮到安全問題,和使用者第一次通路的時候速度比較慢這個問題,是以釋出的Web應用程式需要預編譯一下,一下是關于預編譯的一些資料,從網上轉過來的,可以參考一下 在預編譯的時候需要注意一下幾點: 1.程式本身不能有錯誤,也許在調試的時候沒有編譯出錯,但預編譯的時候很嚴謹,不允許一點錯誤,如果有就會報錯,并且編譯失敗。 2.程式最好先釋出出來,建立虛拟目錄,然後再預編譯 3.未編譯成功請看他的提示,按照提示再修改程式   <script type=text/javascript> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript> </script> ASP.NET 1.x的開發人員常常聽到使用者抱怨首次調用應用程式的時候會碰到初始化延遲。畢竟,初次請求會引發一個系列過程,包括運作庫初始化、分析、把ASPX頁面編譯成中間語言、把方法即時編譯成本地代碼等等。    自從ASP.NET面市以來,開發人員一直都在要求(微軟)出台一個解決辦法,而ASP.NET 2.0利用預編譯提供了一個有效的解決方案。

預編譯選項

    在首次啟動應用程式的時候,ASP.NET會動态地分析和編譯所有的ASP.NET檔案(aspx頁面)。運作環境要對編譯的結果進行緩沖,以便更好地服務未來所有的請求。

    在 伺服器 重新開機或者Web 伺服器 重新開機之後,第一次啟動應用程式也意味着這一過程要重新開始。而且,對應用程式任何檔案的改變都會被系統檢測到,而在檔案發生改變之後首次運作應用程式也會讓這一過程再次發生。

    很多Web開發人員都很讨厭這種初始化延遲。而預編譯通過(預先)編譯應用程式避免了這種延遲。

指令行

    通過安裝在.NET架構2.0裡的aspnet_compiler.exe程式就能夠啟動預編譯。它位于架構安裝目錄下(版本号會根據安裝的架構的版本而有所不同)。下面就是這個程式預設的路徑:

C:<windows base directory>Microsoft.NET

Frameworkv2.0.5072aspnet_compiler.exe 您可以用-?這個指令參數檢視該程式的所有參數清單,下面我就解釋一下一些可用的參數:

  • m:這個參數表示您将使用完整的、應用程式将被預編譯的IIS中繼資料庫路徑。IIS中繼資料庫的路徑是/LM/W3SVC/1/Root/應用程式名。
  • v:使用需要預編譯Web應用程式的虛拟IIS路徑。虛拟路徑的格式是:/應用程式名。
  • p:使用需要預編譯Web應用程式的實體IIS路徑。它是包括驅動器名和指向應用程式目錄的完整路徑。舉個例子c:inetpubwwwroot應用程式名。v這個參數必須和p一起用,是以編譯器能夠解析任何應用程式的根參考。
  • f:表示目标目錄是否要被覆寫。
  • u:用來設定預編譯完的應用程式是可以更新的。這表示所有的标記檔案(ASPX、ASCX等等)都可以在目标目錄裡進行更新。
  • targetDir:用于預編譯應用程式檔案的目标目錄。下面的指令用虛拟路徑和指定的目标路徑預編譯了一個應用程式:aspnet_compiler.exe –v /應用程式名 c:目标目錄名。

    如果沒有指定目标目錄,那麼結果檔案會被放在ASP.NET的臨時檔案目錄裡,就像在ASP.NET運作庫在首次調用應用程式的時候處理編譯一樣。臨時目錄預設的路徑如下:

c: Windows Microsoft.NETFramework

v2.0.50727Temporary ASP.NET Files應用程式名     預編譯另外一個好處是能夠捕捉在應用程式啟動階段發生的任何錯誤。錯誤會顯示在工具裡,但是不會終止編譯過程。

隐藏源代碼

    預編譯的另外一個副産品是能夠隐藏任何或者所有的應用程式源代碼。這意味着其他的開發人員需要利用反編譯程式或者ilasm才能夠取得您的代碼。這就行了——預編譯讓您能夠以二進制檔案的形式分發應用程式。

    目标目錄裡沒有源代碼。App_Code檔案夾裡的所有類都被編譯成一個或者多個二進制檔案,放到bin目錄下;目标目錄下不會有源代碼檔案(.cs、.vb、.js等等)。此外,所有的首頁面檔案也會被編譯到bin目錄下,作為隐藏檔案。ASPX、ASCX和ASHX檔案的所有代碼和标記,以及相關的代碼隐藏檔案都被放在bin目錄下的一個或者多個程式集裡。

    隐藏源代碼是毀譽參半。其他的開發人員無法以任何形式檢視或者更改應用程式——即使是Web頁面标記也不行。而另外一方面,對應用程式的任何改變(不論大小)都要求改變原始的源代碼、重新編譯和重新部署。這可能是一個十分耗時的過程,是以并不一定适用于所有的應用程式。

    可更新指令參數(u)讓您能夠取代這個預設的行為。使用這個參數意味着所有的标記檔案(ASPX、ASCX等等)都要包括在預編譯過程的輸出裡。一旦應用程式被部署,這些檔案仍然能夠用于編輯和更新。在應用程式被應用之後,小的布局問題可以通過源檔案來處理,是以這是一個非常理想的參數。

Visual Studio的支援

    在使用Visual Studio 2005開發基于ASP.NET的應用程式時,預編譯是可選的。“釋出Web站點(Publish Web Site)”菜單選項讓您能夠把網站作為一個預編譯應用程式推到另一個位置。此外,上面還有一個複選框讓您設定可更新選項。

總結

    ASP.NET 2.0的預編譯選項讓您能夠預編譯Web應用程式,以避免(像一般編譯一樣)首次調用應用程式的延遲。此外,它還提供了一定的 安全 性,因為程式的源代碼在結果中是不可見的,所有的内容檔案都可以被隐藏。 <script type=text/javascript> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript> </script>

繼續閱讀