程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 使用 Internet Explorer 部署運行庫應用程序

使用 Internet Explorer 部署運行庫應用程序

編輯:.NET實例教程

本文引用自微軟網站:http://msdn2.microsoft.com/zh-cn/library/a7as3z1d(VS.80).ASPx
使用 Internet Explorer 部署運行庫應用程序
基於 Web 的應用程序可以使用 Microsoft Internet Explorer 5.5 或更高版本下載和運行程序集。基於 Web 的應用程序可以下載兩種標准的可移植可執行 (PE) 文件:.exe 或 .dll。Html 文檔可以提供以下幾個方面的信息:要下載的程序集、程序集的位置以及配置文件(可提供附加信息)的位置。

使用 Internet Explorer 部署應用程序的好處在於:只是在使用程序集時才下載程序集。如果應用程序包含多個程序集,則只有在引用程序集時才會下載程序集。由於不必下載整個應用程序,並且客戶端只接收它要使用的代碼,因此這個自動過程加快了應用程序的初始下載速度。

注意 
從 Internet 部署的代碼通常會根據安全策略具有默認的 Internet 權限集。這些權限允許代碼只執行一組有限的功能。有關默認 Internet 安全策略的更多信息,請參見安全策略。
 

基於 Web 的應用程序設置
默認情況下,公共語言運行庫給每個使用 Internet Explorer 訪問的站點創建一個應用程序域。應用程序域將在一個過程中運行的單獨的應用程序隔離開來。應用程序域的創建方式影響程序集在該域中運行時具有的權限。每個應用程序域都與 URL 證據和應用程序基相關聯,並且還可能擁有配置文件。

URL 證據
URL 證據分配給使用 Microsoft Internet Explorer 5.5 或更高版本所部署的應用程序。運行庫主機使用此 URL 證據基於安全策略制定決策。雖然 URL 證據同時與組成應用程序的程序集和應用程序創建的應用程序域相關聯,但在這兩種情況下,證據的格式是不同的。對於程序集,URL 證據是主程序集文件的完整 URL 路徑。例如,作為應用程序組成部分的程序集可具有 http://www.code.microsoft.com/myApp/myAssembly.dll 的 URL 證據。應用程序域的 URL 證據等同於站點證據。在前面的示例中,應用程序域的 URL 證據將為 http://www.code.microsoft.com/。

注意 
應用程序配置文件的位置不會影響應用程序域的 URL 證據。
 

配置文件
使用 Internet Explorer 部署的 Web 應用程序可以使用存儲在應用程序配置文件中的信息。應用程序配置文件必須與應用程序可執行文件位於 Web 服務器上的相同目錄中。應用程序配置文件必須遵循應用程序配置文件的命名規則。該文件必須與可執行文件同名,並且文件名後追加擴展名 .config。例如,名為 myApplication.exe 的應用程序將擁有一個名為 myApplication.exe.config 的應用程序配置文件。

ASP.NET 應用程序使用 Web.config 文件指定配置信息。Web 應用程序可以提供配置信息,這一點與 ASP.Net 和可執行文件宿主是相同的。如果在 Internet Explorer 中寄宿的應用程序具有配置文件,則使用 <link> 標記和以下語法指定配置文件的位置:

 復制代碼
<LINK REL="CONFIGURATION" HREF="[configuration file name]"></LINK>在此示例中,[configuration file name] 是配置文件的名稱,例如:

 復制代碼
<LINK REL="CONFIGURATION" HREF="two.dll.config"></LINK>對於基本的 Web 應用程序方案(網頁不提供指向配置文件的 <link> 標記)而言,運行庫基於每個站點來創建應用程序域。即,如果 Html 文檔位於 http://www.code.microsoft.com/myApp/mypage.htm,則創建的應用程序域包含整個 http://www.code.microsoft.com 站點。請注意,盡管對 Web 作者而言這種方案是很方便的,但是由於未指定配置文件,所以使用該站點上托管代碼程序集的所有網頁共享同一個應用程序域。

如果應用程序從應用程序配置文件讀取信息,您必須執行以下操作:

將配置文件與可執行文件置於相同位置。

允許匿名訪問網站,並且包含配置文件的目錄必須允許執行腳本。

在更復雜的方案中,可能需要在同一站點上運行兩個或多個不同的應用程序,並且要彼此隔離。若要實現這種隔離,網頁作者必須在 Html 文檔中指定一個配置文件。所有指向同一配置文件的頁在同一應用程序域中創建。這樣,就可以基於每個配置文件創建應用程序域。

注意 
當 <link> 標記中包含相對路徑時,運行庫不支持在指向配置文件的 URL 中使用字符“#”。
 

應用程序基
ApplicationBase 是一個應用程序域屬性,該屬性指定運行庫搜索程序集時用作根目錄的目錄。默認情況下,將 ApplicationBase 屬性假定為站點的根(例如,wwwroot)。如果存在應用程序配置文件,則 ApplicationBase 會成為該配置文件的位置。配置文件可包含特定於應用程序域中運行的代碼的配置信息。如果您的計算機上定義了多個站點,則 ApplicationBase 默認為在端口 80 上定義的“默認”站點。

下載托管可執行文件
雖然使用 <object> 標記下載的大多數應用程序是在網頁上出現的 UI 控件,但是運行庫還支持兩種用於下載托管可執行文件的方案:

用戶在浏覽器中鍵入托管 .exe 文件的 URL;例如:

 復制代碼
http://www.server.microsoft.com/MyWebSite/MyApp.exe.Html 頁包含指向托管可執行文件的鏈接;例如:

 復制代碼
HREF="MyApp.exe".在這兩種方案中,運行庫創建一個在其中運行此可執行文件的新應用程序域。對於後續的程序集請求,將應用程序基設置為此可執行文件的位置。

例如,以下代碼引用 myClass:

 復制代碼
<object id="myCtl" 
  classid="http://www.mycode.M
icrosoft.com/mycode.dll#myClass"> 
</object>當使用 <object> 標記指定調用程序集時,靜態鏈接的依賴程序集必須與調用程序集位於同一目錄。例如,如果程序集 myAssembly.dll 是使用 <object> 標記指定的,並且具有對 myOtherAssembly.dll 的靜態引用,則 myOtherAssembly.dll 必定可以在 myAssembly.dll 所在的同一目錄下找到。

注意 
由 Internet Explorer 使用 HREF 鏈接所部署的托管代碼可執行文件不應該使用命令行參數啟動。參數無法成功地傳遞到可執行文件。 
 

錯誤報告
代碼下載進程使用以下兩個注冊表設置來控制錯誤報告,該錯誤報告來自使用 Internet Explorer 部署的托管代碼可執行文件。

HKLM\Software\Microsoft\.NetFramework\ExposeExceptionsInCOM

HKCU\Software\Microsoft\.NetFramework\ExposeExceptionsInCOM

兩個設置都使用了以下值來指定如何報告錯誤。

值  說明  
1
 將錯誤信息發送到標准的輸出流。
 
2
 將錯誤信息顯示到用戶。
 
3
 將錯誤信息發送到標准的輸出流並顯示到用戶。
 

當您調試使用 Internet Explorer 部署的托管代碼時,若要查找關於代碼下載失敗的詳細信息,可使用這些設置的值。例如,這些設置允許您在引發異常時查看堆棧跟蹤信息,而不依賴於由 Internet Explorer 提供的錯誤報告,這些錯誤報告是為最終用戶而不是開發人員設計的。

寄宿在 Internet Explorer 中的控件
您可以使用 Internet Explorer 承載使用 .Net Framework 創建的宿主控件。控件必須包含在擴展名為 .dll 的庫中。要將同一“Windows 窗體”控件同時用作獨立控件和寄宿在 Internet Explorer 中的控件,庫必須使用 .dll 擴展名,這樣才能在這兩種情況下都有效。

要點 
Internet Explorer 承載的所有托管控件都使用計算機上安裝的最新版本的公共語言運行庫。這意味著在某些情況下,控件可能不針對生成它的版本運行,控件也可能不在最初預計的安全策略下運行。在新版本的公共語言運行庫下運行托管控件之前,必須針為新的運行庫版本更新安全策略。這一點適用於任何安全區域,但是不適用於所下載的托管可執行文件。
 

注意 
   當加載托管控件時,<object> 元素的 classid 屬性的值的最大長度為 256 個字符 (MAX_PATH)。如果長度大於最大值,無法加載控件但也不會生成錯誤。例如,下面的 classid 屬性值的長度是可以接受的:

<object id="myCtl" classid="http://www.example.com/mycode.dll#myClass"> 
 

注意 
為安全起見,不支持 Html 頁中的使用 <object> 標記和文件訪問協議的托管控件。例如,不支持下面的 <object> 標記:

<OBJECT classid="file:///c:/control.dll#control"> 
 

定位依賴程序集
對於基於 Web 的應用程序和非基於 Web 的應用程序,運行庫定位其依賴程序集使用的過程是類似的。運行庫使用 ApplicationBase 的相對路徑搜索專用依賴程序集。運行庫使用 ApplicationBase、配置文件中的 <private_binpath> 標記和搜索規則的組合來定位專用程序集。運行庫還檢查調用程序集所在的 URL,來檢查依賴程序集。

使用 Microsoft Authenticode 簽名給托管代碼簽名
您可以使用文件簽名工具 (Signcode.exe) 為文件附加 Authenticode 數字簽名。請注意,如果您要使用強名稱和 Authenticode 數字簽名為文件簽名,則必須先指定強名稱。先指定 Authenticode 簽名會破壞強名稱。有關文件簽名的更多信息,請參見程序集安全注意事項。有關使用 Visual Studio 2005 進行文件簽名的信息,請參見 Visual Studio 2005 文檔中的“部署和 Authenticode 簽名”。有關 Authenticode 簽名技術的更多信息,請參見 Platform SDK 文檔中的“代碼簽名簡介”。

請參見
參考
文件簽名工具 (Signcode.exe)

概念
.Net Framework 應用程序的部署方案
程序集安全注意事項
運行庫如何定位程序集


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved