共用方式為


使用 Internet Explorer 部署 Runtime 應用程式

Web 架構應用程式可以使用 Microsoft Internet Explorer 5.5 (含) 以後版本來下載並執行組件。Web 架構應用程式可以下載二種標準可攜式可執行檔 (PE) - .exe 或 .dll。HTML 文件可以提供要下載哪個組件、組件位置和組態檔位置 (可提供額外資訊) 的資訊。

使用 Internet Explorer 部署應用程式的優點是需要使用時才下載組件。如果應用程式是由多個組件所組成,則只下載參考到的組件。由於不必下載整個應用程式,用戶端只接收要用的程式碼,這個自動處理序因而可以加快應用程式的初始下載。

**注意   **從 Internet 部署的程式碼通常有安全性原則設定的預設 Internet 使用權限。這些使用權限能讓程式碼只執行有限的函式集合。如需預設 Internet 安全性原則的詳細資訊,請參閱安全性原則

Web 架構應用程式設定

預設情況下,Common Language Runtime 替每一個使用 Internet Explorer 存取的網站建立應用程式定義域。應用程式定義域隔離執行於一個處理序 (Process) 內的不同應用程式。應用程式定義域被建立的方式會影響組件在網域中執行時所擁有的使用權限。每一個應用程式定義域都與 URL 辨識項 (Evidence) 和應用程式基底有關聯,有時甚至還具有組態檔。

URL 辨識項

使用 Microsoft Internet Explorer 5.5 (含) 以後版本部署的應用程式,都會指派 URL 辨識項。Runtime 主機根據安全性原則,使用這個 URL 辨識項來製作決策。雖然 URL 辨識項與組成應用程式的組件和應用程式建立的應用程式定義域有關聯,但是二者的辨識項格式並不相同。組件的 URL 辨識項是主要組件檔的完整 URL 路徑。例如,應用程式中組件的 URL 辨識項可能是 http://www.code.microsoft.com/myApp/myAssembly.dll。應用程式定義域的 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 應用程式案例 (Web 網頁在其中不對組態檔提供 <link> 標記),Runtime 以按照每一站台的基準來建立應用程式定義域。也就是,如果 HTML 文件位在 http://www.code.microsoft.com/myApp/mypage.htm,應用程式定義域則是建立在整個網站 http://www.code.microsoft.com 之上。注意,雖然案例對 Web 作者很便利,在這個站台上使用 Managed 程式碼組件的所有 Web 網頁,將會因為沒有組態檔被指定而共用相同應用程式定義域。

如果應用程式讀取應用程式組態檔資訊,您必須:

  • 將組態檔放在可執行檔的位置上。
  • 允許匿名存取網站,而且組態檔所在目錄必須允許執行指令碼。

在更複雜的案例中,可能需要兩個或更多不同但彼此隔離的應用程式在相同站台上執行。若要達成這樣的隔離,Web 網頁作者必須在 HTML 文件中指定組態檔。所有指向相同組態檔的網頁都在相同應用程式定義域中建立。這樣,按每一組態檔的基準來建立應用程式定義域,是可行的。

**注意   **當 <link> 標記包含相對路徑時,Runtime 不支援在指向組態檔的 URL 中使用「#」字元。

應用程式基底

ApplicationBase 是應用程式定義域屬性,指定 Runtime 搜尋組件時充當根目錄的目錄。預設 ApplicationBase 屬性為站台根目錄 (例如,wwwroot)。如果出現應用程式組態檔,ApplicationBase 就成為組態檔的位置。組態檔可以包含專屬在應用程式定義域中執行的程式碼的組態資訊。如果電腦上定義多個站台,ApplicationBase 會預設為連接埠 80 上定義的「預設」站台。

下載 Managed 可執行檔

當大部分使用 <object> 標記來下載的應用程式出現在 Web 網頁上的 UI 控制項時,Runtime 也支援兩個會下載 Managed 可執行檔的案例:

  • 使用者輸入 Managed .exe 檔案的 URL 至瀏覽器;例如:

    http://www.server.microsoft.com/MyWebSite/MyApp.exe.
    
  • HTML 網頁包含對 Managed 可執行檔的連結;例如:

    HREF="MyApp.exe".
    

兩個案例中,Runtime 都建立新的應用程式定義域以便在其中執行可執行檔。對於組件的後續要求,應用程式基底即設定為可執行檔的位置。

例如,下列程式碼參考 myClass

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

當呼叫組件使用 <object> 標記來指定時,靜態連結的相依組件必須在與呼叫組件相同的目錄中。例如,如果組件 myAssembly.dll 使用 <object> 標記來指定,並且具有 myOtherAssembly.dll 的靜態 (Static) 參考。那麼 myOtherAssembly.dll 必須位於和 myAssembly.dll 相同的目錄。

**注意   **不可以使用命令列引數來啟動 Internet Explorer 使用 HREF 連結部署的 Managed 程式碼可執行檔。引數無法順利傳送至可執行檔。

Internet Explorer 中裝載的控制項

您可以使用 Internet Explorer 來裝載以 .NET Framework 建立的控制項。控制項必須在副檔名為 .dll 的程式庫中。程式庫的副檔名必須是 .dll,Windows Form 控制項才能同時作為獨立控制項和裝載在 Internet Explorer 中的控制項。

Internet Explorer 裝載的所有 Managed 控制項,使用電腦上安裝的最新版 Common Language Runtime。這表示在某些時候控制項並不會使用當初建立時的版本。這在任何安全性地區皆然,但不適用於下載的 Managed 可執行檔。

**注意   **基於安全性考量,使用 <object> 標記的 Managed 控制項和 HTML 網頁中的檔案存取通訊協定未受支援。例如,下列 <object> 標記不受支援:

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

找出相依組件

Runtime 用以找出 Web 架構應用程式相依組件的程序類似它對非 Web 架構應用程式所用的程序。Runtime 使用 ApplicationBase 相關的路徑來搜尋私用相依組件。Runtime 使用 ApplicationBase、組態檔 <private_binpath> 標記和搜尋規則的組合,來找出私用組件。Runtime 也檢查呼叫組件所位在的 URL 來檢查相依組件。

使用 Microsoft Authenticode 簽章簽名 Managed 程式碼

您可以使用檔案簽名工具 (Signcode.exe),以 Authenticode 數位簽章來簽名檔案。請注意,如果您同時想以強式名稱 (Strong Name) 和 Authenticode 數位簽章來簽名檔案,就必須先指定強式名稱。先指定 Authenticode 簽章,會中斷強式名稱。如需檔案簽名的詳細資訊,請參閱組件安全性考量。如需使用 Visual Studio .NET 簽名檔案的詳細資訊,請參閱 Visual Studio .NET 文件中的<部署和 Authenticode 簽名>。如需 Authenticode 簽名技術的詳細資訊,請參閱 Platform SDK 文件中的<程式碼簽名簡介>。

請參閱

部署案例 | 檔案簽章工具 (Signcode.exe) | 組件安全性考量 | Runtime 如何找出組件